Chris__maya_pyside2 學(xué)習(xí) Standard Dialog

  • QFileDialog
  • QMessageBox
  • QInputDialog
  • QColorDialog
  • QFontDialog
  • grp = QtWidgets.QGroupBox("QMessageBox")


    image.png

from PySide2 import QtCore, QtWidgets
from shiboken2 import wrapInstance

import maya.OpenMayaUI as omui
import maya.cmds as cmds
import pymel.core as pm

def get_maya_main_window():
    '''
    Maya main window widget as a pyside2 python object
    :return:
    '''
    maya_main_wnd = omui.MQtUtil.mainWindow()
    return wrapInstance(long(maya_main_wnd), QtWidgets.QWidget)

class ExampleDialog(QtWidgets.QDialog):

    FILE_FILTERS = 'Maya(*.ma *.mb);;Maya ASCII(*.ma);;Maya Binary(*.mb);;All Files(*.*)'
    selected_filter = 'All Files(*.*)'
    def __init__(self, parent=get_maya_main_window()):
        super(ExampleDialog, self).__init__(parent)

        self.setWindowTitle('Standard Qt Dialog UI')
        # self.setMinimumWidth(200)
        self.setWindowFlags(self.windowFlags())

        self.prefs_directory = cmds.internalVar(userPrefDir = True)

        self.create_widgets()
        self.create_layouts()
        self.create_connections()
        # QtCore.QMetaObject.connectSlotsByName(self)

    def create_widgets(self):

        # QFile_btn
        self.get_existing_dir_btn = QtWidgets.QPushButton('getExistingDirectory')
        self.get_open_file_name_btn = QtWidgets.QPushButton('getOpenFileName')
        self.get_open_file_names_btn = QtWidgets.QPushButton('getOpenFileNames')
        self.get_save_file_name_btn = QtWidgets.QPushButton('getSaveFileName')

        # QMessageBox_btn
        self.critical_btn = QtWidgets.QPushButton('critical')
        self.warning_btn = QtWidgets.QPushButton('waring')
        self.information_btn = QtWidgets.QPushButton('information')
        self.question_btn = QtWidgets.QPushButton('question')

        # QInput_btn
        self.get_double_btn = QtWidgets.QPushButton("getDouble")
        self.get_int_btn = QtWidgets.QPushButton("getInt")
        self.get_text_btn = QtWidgets.QPushButton("getText")
        self.get_multi_line_text_btn = QtWidgets.QPushButton("getMultiLineText")

        # QColorDialog_btn
        self.get_color_btn = QtWidgets.QPushButton("getColor")

        # QFontDialog_btn
        self.get_font_btn = QtWidgets.QPushButton("getFont")


    def create_layouts(self):
        main_layout = QtWidgets.QVBoxLayout(self)
        # QFileDialog_layout
        grp_layout = QtWidgets.QHBoxLayout()
        grp_layout.addWidget(self.get_existing_dir_btn)
        grp_layout.addWidget(self.get_open_file_name_btn)
        grp_layout.addWidget(self.get_open_file_names_btn)
        grp_layout.addWidget(self.get_save_file_name_btn)
        grp_layout.addStretch()
        grp = QtWidgets.QGroupBox("QFileDialog")
        grp.setLayout(grp_layout)
        main_layout.addWidget(grp)

        # QMessageBox_layout
        grp_layout = QtWidgets.QHBoxLayout()
        grp_layout.addWidget(self.critical_btn)
        grp_layout.addWidget(self.warning_btn)
        grp_layout.addWidget(self.information_btn)
        grp_layout.addWidget(self.question_btn)
        grp_layout.addStretch()
        grp = QtWidgets.QGroupBox("QMessageBox")
        grp.setLayout(grp_layout)
        main_layout.addWidget(grp)

        # QInput_layout
        grp_layout = QtWidgets.QHBoxLayout()
        grp_layout.addWidget(self.get_double_btn)
        grp_layout.addWidget(self.get_int_btn)
        grp_layout.addWidget(self.get_text_btn)
        grp_layout.addWidget(self.get_multi_line_text_btn)
        grp_layout.addStretch()
        grp = QtWidgets.QGroupBox("QInputDialog")
        grp.setLayout(grp_layout)
        main_layout.addWidget(grp)

        # QColorDialog_layout
        grp_layout = QtWidgets.QHBoxLayout()
        grp_layout.addWidget(self.get_color_btn)
        grp_layout.addStretch()
        grp = QtWidgets.QGroupBox("QColorDialog")
        grp.setLayout(grp_layout)
        main_layout.addWidget(grp)

        # QFontDialog_layout
        grp_layout = QtWidgets.QHBoxLayout()
        grp_layout.addWidget(self.get_font_btn)
        grp_layout.addStretch()
        grp = QtWidgets.QGroupBox("QFontDialog")
        grp.setLayout(grp_layout)
        main_layout.addWidget(grp)

        main_layout.addStretch()

    def create_connections(self):

        self.get_existing_dir_btn.clicked.connect(self.get_existing_directory)
        self.get_open_file_name_btn.clicked.connect(self.get_openFile_name)
        self.get_open_file_names_btn.clicked.connect(self.get_openFile_names)
        self.get_save_file_name_btn.clicked.connect(self.get_saveFile_name)

        self.critical_btn.clicked.connect(self.critical)
        self.warning_btn.clicked.connect(self.warning_)
        self.information_btn.clicked.connect(self.information)
        self.question_btn.clicked.connect(self.question)

        self.get_double_btn.clicked.connect(self.get_float)
        self.get_int_btn.clicked.connect(self.get_int)
        self.get_text_btn.clicked.connect(self.get_text)
        self.get_multi_line_text_btn.clicked.connect(self.get_multi_line_text)

        self.get_color_btn.clicked.connect(self.get_color)
        self.get_font_btn.clicked.connect(self.get_font)

    # ___Slots___
    # QFile
    def get_existing_directory(self):
        directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Select Directory',
                                                               self.prefs_directory)
        if directory:
            print 'File path: {}'.format(directory)

    def get_openFile_name(self):
        file_path, self.selected_filter = QtWidgets.QFileDialog.getOpenFileName(self, "Select File", "",
                                                                                self.FILE_FILTERS,
                                                                                self.selected_filter)

        if file_path:
            print 'File path: {}'.format(file_path)

    def get_openFile_names(self):
        file_paths, self.selected_filter = QtWidgets.QFileDialog.getOpenFileNames(self, "Select File", "",
                                                                                self.FILE_FILTERS,
                                                                                self.selected_filter)
        if file_paths:
            print 'File path: {}'.format(file_paths)

    def get_saveFile_name(self):
        file_path, self.selected_filter = QtWidgets.QFileDialog.getSaveFileName(self, "Save File", "",
                                                                                self.FILE_FILTERS,
                                                                                self.selected_filter)
        if file_path:
            print 'File path: {}'.format(file_path)

    #QMessageBox
    def critical(self):

        QtWidgets.QMessageBox.critical(self, "Error", "There was an Error somewhere")

    def warning_(self):

        QtWidgets.QMessageBox.warning(self, "Waring", 'Something odd just happened')

    def information(self):

        QtWidgets.QMessageBox.information(self, "Info", "Task completed successfully")

    def question(self):
        QtWidgets.QMessageBox.question(self, 'Question', 'Would you like to continue?')

    # QInput
    def get_float(self):
        value, ok = QtWidgets.QInputDialog.getDouble(self, 'Enter a Value', 'Value:')
        if ok:
            print value

    def get_int(self):
        value, ok = QtWidgets.QInputDialog.getInt(self, 'Enter a Value', 'Value:')
        if ok:
            print value

    def get_text(self):
        text, ok = QtWidgets.QInputDialog.getText(self, 'Enter Text', 'Text:')
        if ok:
            print text

    def get_multi_line_text(self):
        text, ok = QtWidgets.QInputDialog.getMultiLineText(self, 'Enter Text', 'Text:')
        if ok:
            print text

    # QColor
    def get_color(self):
        color = QtWidgets.QColorDialog.getColor(parent=self)
        if color:
            print("Red:{0} Green:{1} Blue:{2}".format(color.red(), color.green(), color.blue()))

    def get_font(self):
        font, ok = QtWidgets.QFontDialog.getFont(parent=self)
        if ok:
            print("Family: {0}  Point Size: {1}".format(font.family(), font.pointSize()))

if __name__ == '__main__':

    try:
        myTest_ui.close()  # pylint:disable = E0601
        myTest_ui.deleteLater()  # pylint:disable = E0601
    except:
        pass

    myTest_ui = ExampleDialog()
    myTest_ui.show()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哩盲,一起剝皮案震驚了整個(gè)濱河市耘柱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斜做,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件略水,死亡現(xiàn)場(chǎng)離奇詭異徽诲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)牡属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)票堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人逮栅,你說(shuō)我怎么就攤上這事悴势〈坝睿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵特纤,是天一觀的道長(zhǎng)军俊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捧存,這世上最難降的妖魔是什么粪躬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮昔穴,結(jié)果婚禮上镰官,老公的妹妹穿的比我還像新娘。我一直安慰自己吗货,他們只是感情好朋魔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著卿操,像睡著了一般警检。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上害淤,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天扇雕,我揣著相機(jī)與錄音,去河邊找鬼窥摄。 笑死镶奉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崭放。 我是一名探鬼主播哨苛,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼币砂!你這毒婦竟也來(lái)了建峭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤决摧,失蹤者是張志新(化名)和其女友劉穎亿蒸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掌桩,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡边锁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了波岛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茅坛。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖则拷,靈堂內(nèi)的尸體忽然破棺而出贡蓖,到底是詐尸還是另有隱情祟剔,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布摩梧,位于F島的核電站物延,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仅父。R本人自食惡果不足惜叛薯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笙纤。 院中可真熱鬧耗溜,春花似錦、人聲如沸省容。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腥椒。三九已至阿宅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笼蛛,已是汗流浹背洒放。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滨砍,地道東北人往湿。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惋戏,于是被迫代替她去往敵國(guó)和親领追。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容