Я пытаюсь сделать так, чтобы изображение полностью соответствовало моему ярлыку без использования setScaledContents(True)
, поскольку я хотел бы, чтобы мой ImageGrab имел те же размеры, что и пространство QLabel.
Я использую PIL ImageGrab с bbox. если я увеличу ширину и высоту параметров, программа завершится без ошибок. Я приложил картинку, где изображение на этикетке расположено слева от центра. Я хотел бы это в верхнем левом углу. Так что он может расширяться вниз и вправо, если я увеличу размер.
Но мне любопытно, почему я не могу увеличить размер bbox. (0, 0, 400, 220) работает нормально, но (0, 0, 420, 220) не будет загружать изображение и закрывает графический интерфейс без каких-либо ошибок.
Мне бы хотелось иметь ImageGrab с bbox (0, 0, 800, 700) и QLabel с размером (800, 700), чтобы он идеально подходил для него.
class Main(QMainWindow):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setGeometry(200, 200, 1000, 700)
self.setWindowTitle('threads')
self.mainFrame = QFrame(self)
self.mainFrame.resize(1000, 650)
self.mainFrame.move(0, 50)
self.mainFrame.setStyleSheet("background-color: rbg(50, 50, 50)")
self.testButton = QPushButton("Click", self)
self.testButton.resize(500,30)
self.connect(self.testButton, SIGNAL("clicked()"), self.Capture)
self.label_ = QLabel(self.mainFrame)
self.label_.move(10, 10)
self.label_.resize(980, 630)
self.label_.setStyleSheet("background-color: rbg(150, 150, 150)")
@pyqtSlot(QImage)
def ChangeFrame(self, image):
pixmap = QPixmap.fromImage(image)
self.label_.setPixmap(pixmap)
def Capture(self):
self.thread_ = CaptureScreen()
self.connect(self.thread_, SIGNAL("ChangeFrame(QImage)"), self.ChangeFrame, Qt.QueuedConnection)
self.thread_.start()
class CaptureScreen(QThread):
pixmap = pyqtSignal(QImage)
def __init__(self, parent = None):
QThread.__init__(self)
def __del__(self):
print("?????")
self.exiting = True
self.wait()
def run(self):
while(True):
time.sleep(1/60)
img = ImageGrab.grab(bbox=(0, 0, 420, 220))
frame = ImageQt(img)
frame = QImage(frame)
self.emit( SIGNAL("ChangeFrame(QImage)"), frame)