Python Pyqt5程序打开另一个窗口
我正在尝试创建一个Pyqt5文件,通过单击“推送窗口”按钮打开另一个窗口,并在单击“处理”按钮时打开图像Python Pyqt5程序打开另一个窗口,python,pyqt5,Python,Pyqt5,我正在尝试创建一个Pyqt5文件,通过单击“推送窗口”按钮打开另一个窗口,并在单击“处理”按钮时打开图像运行程序时,我将这些行视为错误 Traceback (most recent call last): File "untitled.py", line 52, in <module> w = MainWindow() File "untitled.py", line 27, in __init__ layout.add
运行程序时,我将这些行视为错误
Traceback (most recent call last):
File "untitled.py", line 52, in <module>
w = MainWindow()
File "untitled.py", line 27, in __init__
layout.addWidget(self.button)
NameError: name 'layout' is not defined
您有以下错误:
- 使用“全局X”不会创建全局变量,它只表示变量X已经是一个全局变量,并且希望重用。一般来说,这是一种不好的做法,在您的情况下,它不会提供任何好处,相反会导致混乱
- 在主窗口构造函数中,您没有创建“layout”对象,因此会出现该错误
class另一个窗口(QWidget):
定义初始化(自):
super()。\uuuu init\uuuuu()
布局=QVBoxLayout(自身)
self.label=QLabel(“另一个窗口”)
layout.addWidget(self.label)
类主窗口(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
central_widget=QWidget()
self.setCentralWidget(中心窗口小部件)
布局=QVBoxLayout(中心_小部件)
self.button=QPushButton(“按下窗口”)
self.button.clicked.connect(self.show\u new\u窗口)
layout.addWidget(self.button)
self.btn1=QPushButton(“过程”)
self.btn1.clicked.connect(self.show\u new\u窗口)
layout.addWidget(self.btn1)
def getImage(自我):
fname=QFileDialog.getOpenFileName(
self,“打开文件”、“/home/ucal/Desktop/”、“图像文件(*.jpg)”
)
imagePath=fname[0]
pixmap=QPixmap(imagePath)
打印(图像路径)
self.label.setPixmap(QPixmap(pixmap))
self.resize(pixmap.width(),pixmap.height())
def显示新窗口(自选,已选中):
self.w=另一个窗口()
self.w.show()
非常感谢您的支持,先生。意义重大。
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget
import sys
class AnotherWindow(QWidget):
def __init__(self):
super().__init__()
global layout
layout = QVBoxLayout()
self.label = QLabel("Another Window")
layout.addWidget(self.label)
self.setLayout(layout)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("Push for Window")
self.button.clicked.connect(self.show_new_window)
layout.addWidget(self.button)
self.btn1 = QPushButton("Process")
self.btn1.clicked.connect(self.show_new_window)
layout.addWidget(self.btn1)
def getImage(self):
fname = QFileDialog.getOpenFileName(self, 'Open file','/home/ucal/Desktop/', "Image files (*.jpg )")
global imagePath
imagePath = fname[0]
global pixmap
pixmap = QPixmap(imagePath)
print(imagePath)
self.label.setPixmap(QPixmap(pixmap))
self.resize(pixmap.width(), pixmap.height())
def show_new_window(self, checked):
self.w = AnotherWindow()
self.w.show()
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()