Skip to content

Commit da858fc

Browse files
committed
fix: 用设置修改456模式的尺寸时,布局出错
1 parent 2a51db3 commit da858fc

2 files changed

Lines changed: 38 additions & 58 deletions

File tree

src/mineSweeperGUI.py

Lines changed: 33 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self, MainWindow, args):
2323
super(MineSweeperGUI, self).__init__(MainWindow, args)
2424
# MineSweeperGUI父类的init中读.ini、读图片、设置字体、局面初始化等
2525

26-
self.operationStream = []
26+
# self.operationStream = []
2727

2828
self.time_10ms: int = 0 # 已毫秒为单位的游戏时间,全局统一的
2929
self.showTime(self.time_10ms // 100)
@@ -103,6 +103,35 @@ def __init__(self, MainWindow, args):
103103

104104
self.mainWindow.closeEvent_.connect(self.closeEvent_)
105105

106+
@property
107+
def pixSize(self):
108+
return self._pixSize
109+
110+
@pixSize.setter
111+
def pixSize(self, pixSize):
112+
pixSize = max(5, pixSize)
113+
if pixSize == self._pixSize:
114+
return
115+
self.label.set_rcp(self.row, self.column, pixSize)
116+
self.label.reloadCellPic(pixSize)
117+
for i in range(4):
118+
self.predefinedBoardPara[i]['pix_size'] = pixSize
119+
self.reimportLEDPic(pixSize)
120+
self.label.setMinimumSize(QtCore.QSize(pixSize * self.column + 8, pixSize * self.row + 8))
121+
self.label.setMaximumSize(QtCore.QSize(pixSize * self.column + 8, pixSize * self.row + 8))
122+
# self.label.setFixedSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
123+
124+
self.label_2.reloadFace(pixSize)
125+
self.set_face(14)
126+
self.showMineNum(self.mineUnFlagedNum)
127+
self.showTime(0)
128+
if pixSize < self._pixSize:
129+
self._pixSize = pixSize
130+
self.minimumWindow()
131+
else:
132+
self._pixSize = pixSize
133+
134+
106135
@property
107136
def gameMode(self):
108137
return self._game_mode
@@ -348,47 +377,9 @@ def resizeWheel(self, i, x, y):
348377
if QApplication.keyboardModifiers() == Qt.ControlModifier and self.game_state == 'ready': # 检测是否按ctrl
349378
if i > 0:
350379
self.pixSize += 1
351-
self.label.set_rcp(self.row, self.column, self.pixSize)
352-
self.label.reloadCellPic(self.pixSize)
353-
for i in range(4):
354-
self.predefinedBoardPara[i]['pix_size'] = self.pixSize
355-
self.reimportLEDPic(self.pixSize)
356-
# self.label.ms_board.pix_size = self.pixSize
357-
self.label.setMinimumSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
358-
self.label.setMaximumSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
359-
self.label_2.reloadFace(self.pixSize)
360-
self.set_face(14)
361-
# pixmap = QPixmap(self.pixmapNum[14])
362-
# self.label_2.setPixmap(pixmap)
363-
# self.label_2.setScaledContents(True)
364-
self.showMineNum(self.mineUnFlagedNum)
365-
self.showTime(0)
366-
# self.label.resize(QtCore.QSize(self.pixSize * self.column + 8, self.pixSize * self.row + 8))
367380
elif i < 0:
368381
self.pixSize -= 1
369-
self.pixSize = max(5, self.pixSize)
370-
self.label.set_rcp(self.row, self.column, self.pixSize)
371-
self.label.reloadCellPic(self.pixSize)
372-
for i in range(4):
373-
self.predefinedBoardPara[i]['pix_size'] = self.pixSize
374-
self.reimportLEDPic(self.pixSize)
375-
# self.label.ms_board.pix_size = self.pixSize
376-
self.label.setMinimumSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
377-
self.label.setMaximumSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
378-
self.label_2.reloadFace(self.pixSize)
379-
self.set_face(14)
380-
# pixmap = QPixmap(self.pixmapNum[14])
381-
# self.label_2.setPixmap(pixmap)
382-
# self.label_2.setScaledContents(True)
383-
self.showMineNum(self.mineUnFlagedNum)
384-
self.showTime(0)
385-
386-
self.minimumWindow()
387-
# 这个哪里用了???延时后缩紧
388-
self.timer_save_size = QTimer()
389-
# self.timer_save_size.timeout.connect(self.refreshSettingsDefault)
390-
self.timer_save_size.setSingleShot(True)
391-
self.timer_save_size.start(500)
382+
392383
elif self.game_state == 'study':
393384
if x < 0 or x >= self.row or y < 0 or y >= self.column:
394385
return
@@ -438,20 +429,9 @@ def gameStart(self):
438429
self.showTime(self.time_10ms)
439430
self.timer_10ms.stop()
440431
self.score_board_manager.editing_row = -1
441-
self.operationStream = [] # 记录整局的鼠标操作流,格式例如[('l1',(x,y)),('r1',(x,y)),('c2',(x,y))]
442432

443433
self.label.paintPossibility = False
444-
# self.label.paint_cursor = False
445-
# self.label.setMouseTracking(False) # 鼠标未按下时,组织移动事件回调
446-
447-
# if self.game_state == 'display':
448-
# self.timer_video.stop()
449-
# self.ui_video_control.QWidget.close()
450-
# elif self.game_state == 'study':
451-
# self.num_bar_ui.QWidget.close()
452434
self.label_info.setText(self.player_designator)
453-
# elif self.game_state == 'show':
454-
# self.label.setMouseTracking(False)
455435

456436
# 这里有点乱
457437
if self.game_state == 'display' or self.game_state == 'showdisplay':
@@ -1052,7 +1032,7 @@ def refreshSettingsDefault(self):
10521032
# 刷新游戏设置.ini里默认部分的设置,与当前游戏里一致,
10531033
# 除了transparency、mainwintop和mainwinleft
10541034
conf = configparser.ConfigParser()
1055-
conf.read(self.game_setting_path)
1035+
conf.read(self.game_setting_path, encoding='utf-8')
10561036
conf.set("DEFAULT", "gamemode", str(self.gameMode))
10571037
conf.set("DEFAULT", "pixsize", str(self.pixSize))
10581038
conf.set("DEFAULT", "row", str(self.row))
@@ -1240,7 +1220,7 @@ def closeEvent_(self):
12401220
conf.write(open(self.game_setting_path, "w", encoding='utf-8'))
12411221

12421222
conf = configparser.ConfigParser()
1243-
conf.read(self.record_path)
1223+
conf.read(self.record_path, encoding='utf-8')
12441224
for key_name in self.record_key_name_list:
12451225
conf[key_name] = self.record[key_name]
12461226
# conf["BFLAG"] = self.record["BFLAG"]

src/superGUI.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,8 @@ def readPredefinedBoardPara(self):
259259

260260
def minimumWindow(self):
261261
# 最小化展示窗口,并固定尺寸
262-
# if self.windowSizeState == 'loose':
263-
self.label.setFixedSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
264-
# self.label.setMinimumSize(QtCore.QSize(self.pixSize*self.column + 8, self.pixSize*self.row + 8))
262+
self.label.setFixedSize(QtCore.QSize(self.pixSize*self.column + 8,
263+
self.pixSize*self.row + 8))
265264
self.windowSizeState = 'tight'
266265
self.timer_ = QTimer()
267266
self.timer_.timeout.connect(self.__minimumWindow)
@@ -273,6 +272,7 @@ def __minimumWindow(self):
273272
if self.minimum_counter >= 100:
274273
self.minimum_counter = 0
275274
self.timer_.stop()
275+
276276

277277

278278
def trans_language(self, language = ""):
@@ -295,7 +295,7 @@ def read_or_create_game_setting(self):
295295
config = configparser.ConfigParser()
296296
if config.read(self.game_setting_path, encoding='utf-8'):
297297
self.mainWindow.setWindowOpacity((config.getint('DEFAULT', 'transparency') + 1) / 100)
298-
self.pixSize = config.getint('DEFAULT', 'pixSize')
298+
self._pixSize = config.getint('DEFAULT', 'pixSize')
299299
self.mainWindow.move(config.getint('DEFAULT', 'mainWinTop'), config.getint('DEFAULT', 'mainWinLeft'))
300300
# self.score_board_manager.ui.QWidget.move(config.getint('DEFAULT', 'scoreBoardTop'),
301301
# config.getint('DEFAULT', 'scoreBoardLeft'))
@@ -341,7 +341,7 @@ def read_or_create_game_setting(self):
341341
self.min3BV = 100
342342
self.max3BV = 381
343343
self.mainWindow.setWindowOpacity(1)
344-
self.pixSize = 20
344+
self._pixSize = 20
345345
self.mainWindow.move(100, 200)
346346
_scoreBoardTop = 100
347347
_scoreBoardLeft = 100

0 commit comments

Comments
 (0)