컴퓨터/Python

pyside2 공부일지

풍경소리^^ 2020. 10. 31. 11:02

www.jbmpa.com/pyside2

 

JBM 프로그래밍, GUI 파이썬, Pyside2, Visual python

GUI 파이썬 프로그래밍, Pyside2 실습, Visual python

www.jbmpa.com

https://www.jbmpa.com/pyside2/2

import sys

import os

from PySide2 import QtUiTools, QtGui

from PySide2.QtWidgets import QApplication, QMainWindow

 

class MainView(QMainWindow):    

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        global UI_set

        UI_set = QtUiTools.QUiLoader().load(resource_path("main.ui"))

        self.setCentralWidget(UI_set)

        self.setWindowTitle("UI TEST")

        # self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

        self.resize(500,270)

        self.show()

 

#파일 경로

#pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView() # 클래스이름

    main.show()

    sys.exit(app.exec_()) # 메인 루프

 

# ctrl + enter      다음 줄

# ctrl + (fn) F5    코드 실행

# ctrl + shift + k  현재 행 삭제

# ctrl + /          현재 행 주석

# alt + ↑           코드 이동

# alt + shift + ↓   현재 행 복사

=======================

https://www.jbmpa.com/pyside2/2

import sys

import os

import sqlite3 as sq # ******************

from PySide2 import QtUiTools, QtGui, QtCore

from PySide2.QtWidgets import QApplication, QMainWindow, QHeaderView, QTableWidgetItem

 

# database 이름 설정

Databasename="nametable.db" # ******************

 

class MainView(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

        

        self.setTable() # ******************

 

 

 

    def setupUI(self):

        global UI_set

 

        # UI 파일 로딩

        UI_set = QtUiTools.QUiLoader().load(resource_path("tablewidgettest.ui")) # 수정

        

        # 버튼 클릭시 데이터 입력을 위해 연결할 클래스 외부 함수

        UI_set.pushButton.clicked.connect(InsertData) # ******************

        # UI_set.pushButton.clicked.connect(self.insertData) # ******************

 

        #Table의 내부 셀을 클릭할 때 연결할 클래스 외부 함수

        #셀을 클릭하여 연결한 함수에는 기본적으로 셀의 Row, Column 두개의 인자를 넘겨준다.

        UI_set.tableWidget.cellClicked.connect(DeleteData)

                

        #Table 기본 세팅위해 내부 메서드 호출

        self.setTable()

                        

        #데이터베이스 세팅을 위해 외부 함수 호출

        CreateTable()

        

        #데이터베이스 세팅 후, DB 값 불러오기외부 함수 호출

        SelectData()

 

        # GUI 화면 출력

        self.setCentralWidget(UI_set)

        self.setWindowTitle("GUI Program Test"# 수정

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

        self.resize(510,640)

        self.show()




    def setTable(self): # ******************

        #table 가로 갯수 # ******************

        UI_set.tableWidget.setColumnCount(4# ******************

        #table 세로 갯수 # ******************

        # UI_set.tableWidget.setRowCount(3) # ******************

        

        #table 헤더 라벨 # ******************

        UI_set.tableWidget.setHorizontalHeaderLabels(['번호','이름','나이','삭제']) # ******************

        #UI_set.tableWidget.setVerticalHeaderLabels(['1','2','3']) # ******************

 

        #테이블 크기에 맞추어 늘려줌 # ******************

        # UI_set.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # ******************

        #UI_set.tableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch) # ******************

        #UI_set.tableWidget.setSpan(1,0, 1,2) # ******************

        

        #테이블 아이템 입력 # ******************

        # for x in range(3): # ******************

        #     UI_set.tableWidget.setItem(x, 0, QTableWidgetItem("")) # ******************

        #     UI_set.tableWidget.setItem(x, 1, QTableWidgetItem("")) # ******************




        #테이블 각 셀의 스타일 세팅

        # 셀의 백그라운드 설정

        # UI_set.tableWidget.item(0, 0).setBackground(QtGui.QColor("#FF0000"))

        #셀안의 텍스트의 정렬 설정

        # UI_set.tableWidget.item(0, 0).setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter)

        #셀안의 텍스트 폰트 설정

        # font = QtGui.QFont("맑은 고딕", 16, QtGui.QFont.Normal)

        # UI_set.tableWidget.item(0, 0).setFont(font)

        #테이블 값 입력

        # UI_set.tableWidget.item(0, 0).setText("홍길동")



    # def insertData(self): # ******************    

    #     name = UI_set.lineEdit.text() # ******************

    #     age = UI_set.lineEdit_2.text() # ******************

        

    #     UI_set.tableWidget.item(0,0).setText(name) # ******************

    #     UI_set.tableWidget.item(0,1).setText(age) # ******************

 

def CreateTable():

    #sqlite3 db 파일 접속, 없으면 생성

    conn = sq.connect(Databasename)

    cur = conn.cursor()

    

    #db에 aaa라는 테이블이 있는지 sqlite3의 마스터 테이블에서 정보를 받아온다.

    sql = "SELECT name FROM sqlite_master WHERE type='table' AND name ='aaa'"

    cur.execute(sql)

    rows = cur.fetchall()

        

    #aaa 테이블이 없으면 새로 생성하고,  있으면 통과

    if not rows:        

        sql = "CREATE TABLE aaa (idx INTEGER PRIMARY KEYname TEXT, age INTEGER)"

        cur.execute(sql)

        conn.commit()

    

    conn.close()

    

def InsertData():

    #두개의 lineEdit에서 각각 이름과 나이를 받아온다.  

    name = UI_set.lineEdit.text()

    age = UI_set.lineEdit_2.text()

    

    conn = sq.connect(Databasename)

    cur = conn.cursor()

    

    sql = "INSERT INTO aaa (name, age) VALUES (?,?)"

    cur.execute(sql, (name, age))

    conn.commit()

    

    conn.close()

    

    # 비우기

    setLineEditDelete()

    #데이터 입력 후 DB의 내용 불러와서 TableWidget에 넣기 위한 함수 호출

    SelectData()

    

    

def DeleteData(rowcolumn):

    #테이블 내부의 셀 클릭과 연결된 이벤트는 기본적으로 셀의 Row, Column을 인자로써 전달받는다.

    

    #삭제 셀이 눌렸을 때, 삭제 셀은 4번째 셀이므로 column 값이 3일 경우만 작동한다.

    if column == 3

        conn = sq.connect(Databasename)

        cur = conn.cursor()

        

        #DB의 데이터 idx는 선택한 Row의 첫번째 셀(0번 Column)의 값에 해당한다.

        idx = UI_set.tableWidget.item(row, 0).text()

        

        sql = "DELETE FROM aaa WHERE idx =?"

        cur.execute(sql, (idx,))

        conn.commit()

        

        conn.close()

        

        #데이터 삭제 후 DB의 내용 불러와서 TableWidget에 넣기 위한 함수 호출

        SelectData()

    

def SelectData():

    #데이터베이스 내부 테이블의 내용을 모두 추출

    conn = sq.connect(Databasename)

    cur = conn.cursor()

    

    sql = "SELECT * FROM aaa"

    cur.execute(sql)

    rows = cur.fetchall()        

    

    conn.close()

    

    #DB의 내용을 불러와서 TableWidget에 넣기 위한 함수 호출

    setTables(rows)



def setTables(row):

    #DB내부에 저장된 결과물의 갯수를 저장한다.        

    count = len(row)

    

    #갯수만큼 테이블의 Row를 생성한다.

    UI_set.tableWidget.setRowCount(count)

    

    #row 리스트만큼 반복하며 Table에 DB 값을 넣는다.

    for x in range(count):

        #리스트 내부의 column쌍은 튜플로 반환하므로 튜플의 각 값을 변수에 저장

        idx, name, age = row[x]

           

        #테이블의 각 셀에 값 입력

        UI_set.tableWidget.setItem(x, 0, QTableWidgetItem(str(idx)))

        UI_set.tableWidget.setItem(x, 1, QTableWidgetItem(name))

        UI_set.tableWidget.setItem(x, 2, QTableWidgetItem(str(age)))

        UI_set.tableWidget.setItem(x, 3, QTableWidgetItem("삭제")) 

 

# lineEdit 내용 지우기

def setLineEditDelete():

    UI_set.lineEdit.setText("")

    UI_set.lineEdit_2.setText("")

 

#파일 경로

#pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView()

    #main.show()

    sys.exit(app.exec_())

========================================

import sys

import os

from PySide2 import QtUiTools, QtGui

from PySide2.QtWidgets import QApplication, QMainWindow, QMessageBox

 

class MainView(QMainWindow):

 

    def __init__(self):

 

        super().__init__()

        self.setupUI()



    def setupUI(self):

 

        global UI_set

 

        UI_set = QtUiTools.QUiLoader().load(resource_path("messagebox.ui"))

 

        UI_set.BTN_messagebox.clicked.connect(buttonclick)

 

        self.setCentralWidget(UI_set)

        self.setWindowTitle("GUI Program Test")

 

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

 

        self.resize(730420)

 

        self.show()



def buttonclick():

 

    # 버튼 클릭시 리턴된 결과값을 받아서 필요에 따라 분기하여 사용한다.

    result = messageBox()

    if result == QMessageBox.Yes:

        message = "Yes"

 

    elif result == QMessageBox.No:

        message = "No"

 

    elif result == QMessageBox.Cancel:

         message = "Cancel"

 

    UI_set.LE_result.setText(message)



def messageBox():

    msgBox = QMessageBox()

    msgBox.setWindowTitle("Alert Window")

    msgBox.setWindowIcon(QtGui.QPixmap("./images/info.png"))

    # msgBox.setIcon(QMessageBox.Information)

    msgBox.setIcon(QMessageBox.NoIcon)

    msgBox.setText("This is title")

    msgBox.setInformativeText("This is content")

    msgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)

    msgBox.setDefaultButton(QMessageBox.Yes)

 

    # 클릭한 버튼의 결과를 int로 반환한다.

    return msgBox.exec_()

    

 

# 파일 경로

# pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

            return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView()

    # main.show()

    sys.exit(app.exec_())



# ctrl + enter      다음 줄

# ctrl + (fn) F5    코드 실행

# ctrl + shift + k  현재 행 삭제

# ctrl + /          현재 행 주석

# alt + ↑           코드 이동

# alt + shift + ↓   현재 행 복사

info.png

=========================

import sys

import os

from PySide2 import QtUiTools, QtGui, QtCore

from PySide2.QtWidgets import QApplication, QMainWindow



class MainView(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        global UI_set, cbox

 

        UI_set = QtUiTools.QUiLoader().load(resource_path("datetest.ui"))

 

        UI_set.BTN_check.clicked.connect(checkcalendar)

        UI_set.Calendar.clicked.connect(inputdate)

 

        self.setCentralWidget(UI_set)

        self.setWindowTitle("GUI Program Test")

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

        self.resize(730490)

        self.show()

 

def inputdate():

    # Calendar 값 dateEdit에 가져오기

    date = UI_set.Calendar.selectedDate()

    UI_set.dateEdit.setDate(QtCore.QDate(date))

 

def checkcalendar():

    # 초기화

    UI_set.TE_result.setText("")

 

    # 현재 선택된 시간(시스템 시간)을 저장

    date = UI_set.Calendar.selectedDate()

    UI_set.TE_result.setText(date.toString("yyyy-MM-dd"))

 

    # 현재 선택된 시간을 변경, 자동으로 위젯 페이지 변경

    UI_set.Calendar.setSelectedDate(QtCore.QDate(2020112))

 

    #  변경된 시간을 다시 저장

    date = UI_set.Calendar.selectedDate()

    UI_set.TE_result.append(date.toString("yyyy-MM-dd"))

 

    # 달력 위젯 페이지만 변경

    UI_set.Calendar.setCurrentPage(202011)

 

    # 메서드로 년, 월, 일, 요일 출력하기

    UI_set.TE_result.append(str(date))

    UI_set.TE_result.append(str(date.year()))

    UI_set.TE_result.append(str(date.month()))

    UI_set.TE_result.append(str(date.day()))

    UI_set.TE_result.append(str(date.dayOfWeek()))



# 파일 경로

# pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView()

    # main.show()

    sys.exit(app.exec_())

====================================

import sys

import os

from PySide2 import QtUiTools, QtGui

from PySide2.QtWidgets import QApplication, QMainWindow, QFileDialog

from tkinter import *

from tkinter import filedialog

 

class MainView(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        global UI_set

 

        UI_set = QtUiTools.QUiLoader().load(resource_path("filedialog.ui"))

 

        # self.tr 메서드는 QMainWindow object를 받아 실행하기 때문에

 

        # 클래스 내부에 FilesOpen01 ~ FilesOpen06 메서드를 만듬

        UI_set.BTN_filedialog_s1.clicked.connect(self.FilesOpen01)

        UI_set.BTN_filedialog_s2.clicked.connect(self.FilesOpen02)

        UI_set.BTN_filedialog_s3.clicked.connect(self.FilesOpen03)

 

        UI_set.BTN_filedialog_ns1.clicked.connect(self.FilesOpen04)

        UI_set.BTN_filedialog_ns2.clicked.connect(self.FilesOpen05)

        UI_set.BTN_filedialog_ns3.clicked.connect(self.FilesOpen06)

 

        UI_set.BTN_tkinter_1.clicked.connect(FileOpen01)

        UI_set.BTN_tkinter_2.clicked.connect(FileOpen02)

        UI_set.BTN_tkinter_3.clicked.connect(FileOpen03)

 

        self.setCentralWidget(UI_set)

        self.setWindowTitle("GUI Program Test")

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/jbmpa.png")))

        self.resize(730420)

        self.show()

 

    # static function 단일 파일

    def FilesOpen01(self):

        fileName = QFileDialog.getOpenFileName(selfself.tr("Open Data files"), "./",

                                          self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)"))

        UI_set.TBrowser.setText(str(fileName))

 

    # static function 다중 파일

    def FilesOpen02(self):

        fileNames = QFileDialog.getOpenFileNames(selfself.tr("Open Data files"), "./",

                                          self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)"))

        UI_set.TBrowser.setText(str(fileNames))

 

    # static function 디렉토리

    def FilesOpen03(self):

        dirName = QFileDialog.getExistingDirectory(selfself.tr("Open Data files"), "./",

                                                  QFileDialog.ShowDirsOnly)

        UI_set.TBrowser.setText(str(dirName))

 

    # Non static function 단일 파일

    def FilesOpen04(self):

        dialog = QFileDialog(self)

        dialog.setFileMode(QFileDialog.ExistingFile)

        dialog.setNameFilter(self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)"))

        dialog.setViewMode(QFileDialog.Detail)

        if dialog.exec_():

            fileName = dialog.selectedFiles()

            UI_set.TBrowser.setText(str(fileName))

 

    # Non static function 다중 파일

    def FilesOpen05(self):

        dialog = QFileDialog(self)

        dialog.setFileMode(QFileDialog.ExistingFiles)

        dialog.setNameFilter(self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)"))

        dialog.setViewMode(QFileDialog.Detail)

        if dialog.exec_():

            fileNames = dialog.selectedFiles()

            UI_set.TBrowser.setText(str(fileNames))

 

    # Non static function 단일 파일

    def FilesOpen06(self):

        dialog = QFileDialog(self)

        dialog.setFileMode(QFileDialog.Directory)

        dialog.setViewMode(QFileDialog.Detail)

        if dialog.exec_():

            dirName = dialog.selectedFiles()

            UI_set.TBrowser.setText(str(dirName))

 

# tkinter 단일 파일

def FileOpen01():

    root = Tk()

    root.withdraw()

    root.filename = filedialog.askopenfilename(initialdir="./"title="Open Data files",

                                               filetypes=(("data files""*.csv;*.xls;*.xlsx"), ("Images""*.png *.xpm *.jpg *.gif"),("all files""*.*")))

 

    UI_set.TBrowser.setText(str(root.filename))

 

# tkinter 다중 파일

def FileOpen02():

    root = Tk()

    root.withdraw()

    root.filename = filedialog.askopenfilenames(initialdir="./"title="Open Data files",

                                               filetypes=(("data files""*.csv;*.xls;*.xlsx"), ("Images""*.png *.xpm *.jpg *.gif"), ("all files""*.*")))

 

    UI_set.TBrowser.setText(str(root.filename))

 

# tkinter 디렉토리 파일

def FileOpen03():

    root = Tk()

    root.withdraw()

    root.filename = filedialog.askdirectory(initialdir="./"title="Open Data files")

 

    UI_set.TBrowser.setText(str(root.filename))

 

# 파일 경로

# pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView()

    # main.show()

    sys.exit(app.exec_())

====================================

import sys

import os

from PySide2 import QtUiTools, QtGui, QtCore

from PySide2.QtWidgets import QApplication, QMainWindow



class MainView(QMainWindow):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        global UI_set, cbox

 

        UI_set = QtUiTools.QUiLoader().load(resource_path("datetest.ui"))

 

        UI_set.BTN_check.clicked.connect(checkcalendar)

        UI_set.Calendar.clicked.connect(inputdate)

        UI_set.comboBox.currentIndexChanged.connect(checkcombobox)

 

        # comboBox 아이템 모두 삭제

        UI_set.comboBox.clear()

 

        # Item 추가

        UI_set.comboBox.addItem("Sunny""data s")

        UI_set.comboBox.addItem("Cloudy""data c")

        UI_set.comboBox.addItem("Rainy""data r")

        UI_set.comboBox.addItem("Foggy""data f")

 

        # comboBox 기본 값 설정

 

        UI_set.comboBox.setCurrentText('Sunny')

 

        self.setCentralWidget(UI_set)

        self.setWindowTitle("GUI Program Test")

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

        self.resize(730490)

        self.show()

 

def inputdate():

    # Calendar 값 dateEdit에 가져오기

    date = UI_set.Calendar.selectedDate()

    UI_set.dateEdit.setDate(QtCore.QDate(date))

    UI_set.dateTimeEdit.setDate(QtCore.QDate(date))

 

def checkcombobox():

    index = UI_set.comboBox.currentIndex()

    text = UI_set.comboBox.currentText()

    data = UI_set.comboBox.currentData()

 

    UI_set.TE_result.setText(str(index))

    UI_set.TE_result.append(text)

    UI_set.TE_result.append(data)

 

def checkcalendar():

    # 초기화

    # UI_set.TE_result.setText("")

    # UI_set.TE_result.clear()

 

    # 현재 선택된 시간(시스템 시간)을 저장

    date = UI_set.Calendar.selectedDate()

    UI_set.TE_result.setText(date.toString("yyyy-MM-dd"))

 

    # 현재 선택된 시간을 변경, 자동으로 위젯 페이지 변경

    UI_set.Calendar.setSelectedDate(QtCore.QDate(2020112))

 

    #  변경된 시간을 다시 저장

    date = UI_set.Calendar.selectedDate()

    UI_set.TE_result.append(date.toString("yyyy-MM-dd"))

 

    # 달력 위젯 페이지만 변경

    UI_set.Calendar.setCurrentPage(202011)

 

    # 메서드로 년, 월, 일, 요일 출력하기

    UI_set.TE_result.append(str(date))

    UI_set.TE_result.append(str(date.year()))

    UI_set.TE_result.append(str(date.month()))

    UI_set.TE_result.append(str(date.day()))

    UI_set.TE_result.append(str(date.dayOfWeek()))



# 파일 경로

# pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView()

    # main.show()

    sys.exit(app.exec_())

======================

wikidocs.net/35789

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

https://www.jbmpa.com/pyside2/2

import sys

import os

from PySide2 import QtUiTools, QtGui

from PySide2.QtWidgets import QApplication, QMainWindow



class MainView(QMainWindow):    

    def __init__(self):

        super().__init__()

        self.setupUI()

 

    def setupUI(self):

        global UI_set

        UI_set = QtUiTools.QUiLoader().load(resource_path("button.ui"))

        self.setCentralWidget(UI_set)

        self.setWindowTitle("Button Demo")

        self.setWindowIcon(QtGui.QPixmap(resource_path("./images/pysidelogo.png")))

        self.resize(500,270)

        self.show()

    

        UI_set.button.clicked.connect(self.okButtonClicked)

        UI_set.checkBox.toggled.connect(self.onCaseSensitivity)

        UI_set.button1.toggled.connect(self.onMale)

        

    def okButtonClicked(self):

        print('okButtonClicked')

 

    def onCaseSensitivity(self,toggle):

        print('okCaseSensitity',toggle)

        print(UI_set.checkBox.isChecked())

 

    def onMale(self,toggle):

        print('onMale',toggle) 

 

 

#파일 경로

#pyinstaller로 원파일로 압축할때 경로 필요함

def resource_path(relative_path):

    if hasattr(sys, '_MEIPASS'):

        return os.path.join(sys._MEIPASS, relative_path)

    return os.path.join(os.path.abspath("."), relative_path)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    main = MainView() # 클래스이름

    main.show()

    sys.exit(app.exec_()) # 메인 루프

button.ui
0.00MB
button_start.py
0.00MB

===========================

wikidocs.net/35789

 

Logon.qrc
0.00MB
Logon.ui
0.00MB
Logon_rc.py
0.20MB
Logon3.py
0.00MB
ui_logon.py
0.00MB

pyside2-uic Logon.ui -o ui_logon.py 고쳐야됨

pyside2-rcc -o Logon_rc.py Logon.qrc 고쳐야됨

==========================

wikidocs.net/35753

 

 

# ctrl + enter      다음 줄

# ctrl + (fn) F5    코드 실행

# ctrl + shift + k  현재 행 삭제

# ctrl + /          현재 행 주석

# alt + ↑           코드 이동

# alt + shift + ↓   현재 행 복사

GridDialog.qrc
0.00MB
GridDialog.ui
0.00MB
GridDialog_rc.py
0.34MB
GridDialog1.py
0.00MB
GridDialog2.py
0.00MB

===================================

wikidocs.net/35754

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

FindReplaceDialog1.py
0.01MB

 

========================================

3.5 폼으로 작성하는 모덜리스 다이얼로그

wikidocs.net/35765

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

# FindReplaceDialog2.py

class FindReplaceDialog(QDialog):

    find = Signal(str,bool,bool,bool)  # find(findText,matchWholeWord,matchCase,upward)

    replace = Signal(str,str,bool,bool,bool# replace(findText,replaceText,matchWoleWord,matchCase,upward)

    replaceAll = Signal(str,str,bool,bool,bool# replaceAll(findText,replaceText,matchWoleWord,matchCase,upward)

 

    def __init__(self,parent=None):

        QDialog.__init__(self,parent)



        self.ui = Ui_FindReplaceDialog() # 일부 수정

        self.ui.setupUi(self) # 일부 수정

        

        self.setWindowTitle("Find/Replace...") # 일부 수정

        self.setWindowIcon(QIcon("./images/find.png")) # 일부 수정

        

# some stuffs for child widget

        self.ui.findComboBox.setEditable(True)  # 일부 수정

        self.ui.replaceComboBox.setEditable(True)  # 일부 수정

 

        self.ui.findButton.setDefault(True)  # 일부 수정

FindReplaceDialog.qrc
0.00MB
FindReplaceDialog_rc.py
0.12MB
FindReplaceDialog.ui
0.00MB
FindReplaceDialog1.py
0.01MB
FindReplaceDialog2.py
0.01MB

===================================