2016-09-15 172 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

感謝您的幫助。我會嘗試。 –

相關問題