2016-09-15 132 views
1

我开发了一个简单的GUI应用程序,使用Qt设计器,在主窗口中包含一个tab-widget。 Tab-Widget由三个不同功能的页面组成(Tab1 ='Home',Tab2 ='Inspection',Tab3 ='查看结果')。使用按钮更改QTabWidget选项卡

我希望用户在Tab1上按下按钮(检查/查看结果),以便跳入Tab2和Tab3而无需手动点击所需的选项卡。任何人都可以告诉我该怎么做?我附上快照映像更好的信息:

Home widget snapshot

下面是我的代码:

from __future__ import division 
from skimage.measure import compare_ssim as ssim 
#from PyQt4.uic import photo_rc 
import matplotlib.pyplot as plt 
import numpy as np 
import sys 
import cv2 
from PyQt4 import QtCore, QtGui, uic 
from PyQt4.QtGui import * 

gui_file = 'i-MIS Alpha.ui' # Enter GUI file name 


[Ui_MainWindow, QtBaseClass] = uic.loadUiType(gui_file) 
#[Ui_DialogBox, QtBaseClass] = uic.loadUiType(gui_dialog) 


class Inspection(QtGui.QMainWindow, Ui_MainWindow): 

    def __init__(self): 
    QtGui.QMainWindow.__init__(self) 
    Ui_MainWindow.__init__(self) 
    self.setupUi(self) 
    self.capture_button.clicked.connect(self.captureImage) 
    self.inspect_button.clicked.connect(self.displayImage) 
    self.deviceBox.activated.connect(self.selectDeviceCombo) 
    self.startInspectionBtn.clicked.connect(self.enterLotID) 
    self.inspect_button.clicked.connect(self.displayResults) 
    self.viewResultBtn.clicked.connect(self.viewResults) 


def enterLotID(self): 
    title, ok = QInputDialog.getText(self, 'Input Dialog', 'Enter the Lot ID:') 
    if ok: 
     self.accept.setText(str(title)) 



def displayImage(self): # Perform image comparison at 'Display' tab 
    sample_label = 'c:/Users/mohd_faizal4/Desktop/Python/Image/Picture 6.jpg' 
    self.sample_label.setScaledContents(True) 
    self.sample_label.setPixmap(QtGui.QPixmap(sample_label)) 

def selectDeviceCombo(self, event): 
    self.var_Selected = self.deviceBox.currentText() 
    #print ('The user selected value now is:') 
    print ('Device = ' + self.var_Selected) 

    if self.var_Selected.lower() == 'xf35': 
     print("Great! Device Id is - " + self.var_Selected + '!') 
     source_label ='c:/Users/mohd_faizal4/Desktop/Python/Image/Picture 4.jpg' 
     self.source_label.setScaledContents(True) 
     self.source_label.setPixmap(QtGui.QPixmap(source_label)) 
    elif self.var_Selected.lower() == 'xf38': 
     print("Great! Device Id is - " + self.var_Selected + '!') 
     source_label ='c:/Users/mohd_faizal4/Desktop/Python/Image/Picture 5.jpg' 
     self.source_label.setScaledContents(True) 
     self.source_label.setPixmap(QtGui.QPixmap(source_label)) 
    elif self.var_Selected.lower() == 'x38c': 
     print("Great! Device Id is - " + self.var_Selected + '!') 
     source_label ='c:/Users/mohd_faizal4/Desktop/Python/Image/Picture 7.jpg' 
     self.source_label.setScaledContents(True) 
     self.source_label.setPixmap(QtGui.QPixmap(source_label)) 
    else: 
     print ("Pls select device id. It's reguired field!") 


def captureImage(self): # Capture image and display on 'Sample' column under Inspection 

    cam = cv2.VideoCapture(0) 

    i = 0 
    while i < 10: 
     ret, frame = cam.read() 
     cv2.imshow('test', frame) 
     #self.sample_label.setScaledContents(True) 
     #self.sample_label.setPixmap(QtGui.QPixmap(sample_label)) 
     if not ret: 
      break 
     k = cv2.waitKey(2) 

     if k%256 == 27: 
     # ESC pressed 
     print("Escape hit, closing...") 
     break 
     if k % 256 == 32: 
      # SPACE pressed 
      img_name = "XBU 12345.6_{}.jpeg".format(i) 
      cv2.imwrite(img_name, frame) 
      print("{}".format(img_name)) 
      i += 1 

    cam.release() 
    cv2.destroyAllWindows() 


def viewResults(self): 


def displayResults(self): 
    label_vid01 = 'c:/Users/mohd_faizal4/Desktop/Python/Image/Picture 7.jpg' 
    self.label_vid01.setScaledContents(True) 
    self.label_vid01.setPixmap(QtGui.QPixmap(label_vid01)) 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    Window = Inspection() 
    Window.show() 
    sys.exit() 

回答

0

你可以使用:

setCurrentIndex (self, int index) 

与索引1秒和2第三个标签

setCurrentWidget (self, QWidget widget) 
+0

我在哪里可以实现这个到我的代码?我仍然没有清晰的画面。 –

+0

您必须将__init__函数中的按钮连接到您创建的插槽,在这些插槽内使用上述功能。 – basslo

+0

感谢您的帮助。我会尝试。 –

相关问题