2015-11-24 88 views
0

我正在尝试做一个应用程序,所以我开始构建主窗口,我花了一些时间来弄清楚如何放置背景图片,但最终我得到了它,但是当我点击以最大化窗口时,我注意到按钮不在以前的中心位置,并且背景图像也不会根据窗口的大小调整大小。我想要背景图像和按钮自动调整。 请帮助这个可怜的新手T.T如何使用PyQt制作可调整大小的窗口和可调整大小的背景图像?

这里是我的代码:你需要一些布局,以将您的小部件

from PyQt4 import QtCore, QtGui 
import sys 

# Encoding Utf-8* 
try: 
    _from_utf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _from_utf8(s): 
     return s 
try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 

    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

# Main Window 


class Window (QtGui.QMainWindow): 
    def __init__(self): 
     super(Window, self).__init__() 

     self.setGeometry(100, 100, 800, 600) 
     self.setWindowTitle(_from_utf8("Virtual Library")) 
     self.setStyleSheet("background-image: url(nwlib.jpg);") 

     # ExitOption 
     menu_action1 = QtGui.QAction("Exit", self) 
     menu_action1.setShortcut("Ctrl+Q") 
     menu_action1.setStatusTip('Exit The App') 
     menu_action1.triggered.connect(self.close_application) 

     self.statusBar() 

     # MenuBar 
     main_menu = self.menuBar() 
     file_menu = main_menu.addMenu('Options') 
     file_menu.addAction(menu_action1) 

     self.home() 

    def home(self): 

     # NewLibrary btn 
     new_lib_btn = QtGui.QPushButton("New Library", self) 
     new_lib_btn.setGeometry(QtCore.QRect(310, 180, 141, 41)) 

     # AccessLibrary btn 
     access_lib_btn = QtGui.QPushButton("Access Library", self) 
     access_lib_btn.setGeometry(QtCore.QRect(310, 250, 141, 41)) 

     # FindNewBooks btn 
     find_nbooks = QtGui.QPushButton("Find New Books", self) 
     find_nbooks.setGeometry(QtCore.QRect(310, 320, 141, 41)) 

     self.show() 

    def close_application(self): 
     choice = QtGui.QMessageBox.question(self, 'Exit', 
             "Close the application?", 
             QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) 
     if choice == QtGui.QMessageBox.Yes: 
      sys.exit() 
     else: 
      pass 


def run(): 
    app = QtGui.QApplication(sys.argv) 
    GUI = Window() 
    sys.exit(app.exec_()) 


run() 

回答

0

,你需要设置对齐also.I编辑你的代码位,让你在找什么。我也编辑了关闭活动。

从PyQt4的进口QtCore,QtGui 进口SYS

# Encoding Utf-8* 
try: 
    _from_utf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _from_utf8(s): 
     return s 
try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 

    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

# Main Window 


class Window (QtGui.QMainWindow): 
    def __init__(self): 
     super(Window, self).__init__() 

     self.setGeometry(100, 100, 800, 600) 
     self.setWindowTitle(_from_utf8("Virtual Library")) 
     self.setStyleSheet("background-image: url(nwlib.jpg);") 

     # ExitOption 
     menu_action1 = QtGui.QAction("Exit", self) 
     menu_action1.setShortcut("Ctrl+Q") 
     menu_action1.setStatusTip('Exit The App') 
     menu_action1.triggered.connect(self.close_application) 

     self.statusBar() 

     # MenuBar 
     main_menu = self.menuBar() 
     file_menu = main_menu.addMenu('Options') 
     file_menu.addAction(menu_action1) 

     self.home() 

    def home(self): 

     # NewLibrary btn 
     centralwidget = QtGui.QWidget(self) 
     self.mainLayout = QtGui.QVBoxLayout(centralwidget) 
     new_lib_btn = QtGui.QPushButton("New Library", self) 
     new_lib_btn.setMinimumSize(141, 41) 

     # AccessLibrary btn 
     access_lib_btn = QtGui.QPushButton("Access Library", self) 
     access_lib_btn.setMinimumSize(141, 41) 

     # FindNewBooks btn 
     find_nbooks = QtGui.QPushButton("Find New Books", self) 
     find_nbooks.setMinimumSize(141, 41) 

     self.mainLayout.addWidget(new_lib_btn) 
     self.mainLayout.addWidget(access_lib_btn) 
     self.mainLayout.addWidget(find_nbooks) 

     self.mainLayout.setAlignment(QtCore.Qt.AlignCenter) 

     self.setCentralWidget(centralwidget) 

     self.show() 

    def close_application(self): 
     choice = QtGui.QMessageBox.question(self, 'Exit', 
             "Close the application?", 
             QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) 
     if choice == QtGui.QMessageBox.Yes: 
      sys.exit() 
     else: 
      pass 


def run(): 
    app = QtGui.QApplication(sys.argv) 
    GUI = Window() 
    sys.exit(app.exec_()) 


run() 
+0

嘿,非常感谢! :) –

相关问题