Изменить вкладку QTabWidget с помощью кнопки

Я разработал простое приложение с графическим интерфейсом, используя дизайнер Qt, содержащее вкладку-виджет в главном окне. Вкладка-виджет состоит из трех страниц с разными функциями (Tab1 = «Главная», Tab2 = «Проверка», Tab3 = «Просмотр результатов»).

Я хотел бы, чтобы пользователь нажимал кнопку (результаты проверки/просмотра) на Tab1, чтобы перейти на Tab2 и Tab3, не нажимая вручную нужную вкладку. Может ли кто-нибудь посоветовать мне, как это сделать? Я прикрепил изображение снимка для лучшей информации:

Снимок главного виджета

Ниже мой код:

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()

person faizal_a    schedule 15.09.2016    source источник


Ответы (2)


ты можешь использовать :

setCurrentIndex (self, int index)

с индексом 1 для второй и 2 для третьей вкладки

or

setCurrentWidget (self, QWidget widget)
person basslo    schedule 16.09.2016
comment
Где я могу реализовать это в своем коде? я до сих пор не получить четкое изображение. - person faizal_a; 19.09.2016
comment
вы должны подключить свои кнопки в функции init к слотам, которые вы создаете, внутри этих слотов вы используете функции, указанные выше. - person basslo; 20.09.2016
comment
Спасибо за вашу помощь. Я попробую. - person faizal_a; 20.09.2016

У меня есть аналогичный вариант использования, который мне нужно изменить или сосредоточиться на вкладке «Отображение» при нажатии кнопки «Чтение». Итак, приведенный ниже код может помочь вам понять, как это сделать. Добавьте следующий фрагмент кода в событие нажатия кнопки.

self.tabWidget.setCurrentWidget(self.display_tab)

Пожалуйста, обратитесь к изображению для большей ясности. В случае каких-либо вопросов дайте мне знать.

вкладка фокусируется на нажатии кнопки

person Amrith Raj Herle    schedule 04.12.2018