1
我一直在使用PyQt4實現一個應用程序。從QComboBox中的樣式列表中使用QStyleFactory設置樣式
在這個應用我想根據用戶的選擇來設置風格,我想設置的樣式,而無需再次重新啓動的對話框。
這裏是我的一塊,其影響造型區號:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtGui
styles = ["Plastique","Cleanlooks","CDE","Motif","GTK+"]
class AppWidget(QWidget):
def __init__(self,parent=None):
super(AppWidget,self).__init__(parent)
global styles # declaring global
# I've skipped the useless codes
horizontalLayout = QHBoxLayout()
self.styleLabel =QLabel("Set Style:")
self.styleComboBox = QComboBox()
self.styleComboBox.addItems(styles) # adding the styles list
horizontalLayout.addWidget(self.styleLabel)
horizontalLayout.addWidget(self.styleComboBox)
# skip more code
self.setLayout(layout)
def getStyle(self):
return self.styleComboBox.currentIndex() # get the current index from combobox
# another way i also implement is :
# return self.styleComboBox.currentText()
# after that i remove the global and directly access using this method
# which is of no success
if __name__ == "__main__":
global styles # declaring global
app = QApplication(sys.argv)
widgetApp = AppWidget()
i = widgetApp.getStyle() # assign the index here
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(styles[i])) # setting the style
widgetApp.show()
app.exec_()
print i
但我一直得到只有「Plastique在」風格。
@LucyJaa。我已經爲我添加的行添加了評論。你不需要你的例子中的任何代碼用於'global styles'和'getStyle'。我還在一些地方添加了'QtGui'(但這不會有什麼區別)。除此之外,我的代碼與您的示例相同。 – ekhumoro