L001.PyQt
초보자를 위한 Python GUI 프로그래밍 - PyQt5
https://wikidocs.net/book/2944
https://freeprog.tistory.com/330?category=716617
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Library\bin\designer.exe
C:\ProgramData\Anaconda3\Library\bin\designer.exe
#设置为 32 位
set CONDA_FORCE_32BIT=1 #创建 32位 python3
conda create -n py3-32 python=3 #激活 环境
activate py3-32 pip install PyQt5 pip install jupyter notebook 要是要改成64位 后面没有1
set CONDA_FORCE_32BIT=
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic #UI파일 연결
#단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다.
form_class = uic.loadUiType("UI파일이름.ui")[0] #화면을 띄우는데 사용되는 Class 선언
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
"""
---------------------------------------------
이 부분에 시그널을 입력해야 합니다.
시그널이 작동할 때 실행될 기능은 보통 이 클래스의 멤버함수로 작성합니다.
---------------------------------------------
""" if __name__ == "__main__" :
app = QApplication(sys.argv) #QApplication : 프로그램을 실행시켜주는 클래스
myWindow = WindowClass() #WindowClass의 인스턴스 생성
myWindow.show()#프로그램 화면을 보여주는 코드
app.exec_()#프로그램을 이벤트루프로 진입시키는(프로그램을 작동시키는) 코드 """
모든 함수의 앞에는 self.ObjectName이 들어가야 합니다.
.move(x,y)=>위젯의 위치를 지정합니다. Parameter에는 이동할 위치의 x,y좌표가 들어갑니다.
.resize(width,height)=>위젯의 크기를 지정합니다. Parameter에는 위젯의 가로,세로 크기가 들어갑니다.
.text()=>위젯에 쓰여있는 글자를 가져옵니다.
.setText(String)=>위젯에 새롭게 글자를 작성합니다. Parameter에는 표시할 글자가 들어갑니다.
"""
pushButton
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic #UI파일 연결
#단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다.
form_class = uic.loadUiType("L001.PushButton.ui")[0] #화면을 띄우는데 사용되는 Class 선언
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #버튼에 기능을 연결하는 코드
#self.버튼이름.clicked.connect(함수)
self.pushButton_1.clicked.connect(self.button1Function)
self.pushButton_2.clicked.connect(self.button2Function) #btn_1이 눌리면 작동할 함수
def button1Function(self) :
print("btn_1 Clicked") #btn_2가 눌리면 작동할 함수
def button2Function(self) :
print("btn_2 Clicked") if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic form_class = uic.loadUiType("L002.radioButton.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #GroupBox안에 있는 RadioButton들을 연결합니다.
#GroupBox의 자세한 설명은 02.14 GroupBox를 참고하세요.
#self.Radio버튼이름.clicked.connect(함수)
self.radioButton.clicked.connect(self.groupboxRadFunction)
self.radioButton_2.clicked.connect(self.groupboxRadFunction)
self.radioButton_3.clicked.connect(self.groupboxRadFunction) def groupboxRadFunction(self) :
if self.radioButton.isChecked() : print("GroupBox_rad1 Chekced")
elif self.radioButton_2.isChecked() : print("GroupBox_rad2 Checked")
elif self.radioButton_3.isChecked() : print("GroupBox_rad3 Checked") if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
checkBox
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic form_class = uic.loadUiType("L003.checkBox.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #GroupBox안에 있는 CheckBox에 기능 연결
self.checkBox.stateChanged.connect(self.groupchkFunction)
self.checkBox_2.stateChanged.connect(self.groupchkFunction) #GroupBox밖에 있는 CheckBox에 기능 연결
self.checkBox_3.stateChanged.connect(self.chkFunction)
self.checkBox_4.stateChanged.connect(self.chkFunction) def groupchkFunction(self) :
if self.checkBox.isChecked() : print("groupchk_1 isChecked")
if self.checkBox_2.isChecked() : print("groupchk_2 isChecked") def chkFunction(self) :
#CheckBox는 여러개가 선택될 수 있기 때문에 elif를 사용하지 않습니다.
if self.checkBox_3.isChecked() : print("chk_3 isChecked")
if self.checkBox_4.isChecked() : print("chk_4 isChecked") if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
Label
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic #UI파일 연결
#단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다.
form_class = uic.loadUiType("L004.Label")[0] #화면을 띄우는데 사용되는 Class 선언
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #버튼에 기능을 연결하는 코드
self.btn_clean.clicked.connect(self.fun_label_clean)
self.btn_get.clicked.connect(self.fun_label_get)
self.btn_set.clicked.connect(self.fun_label_set) def fun_label_clean(self) :
self.label.clear() #清理文本 def fun_label_get(self) :
print(self.label.text()) #获取文本 def fun_label_set(self) :
self.label.setText("String") #设置文本 if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
TextBrowser
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic #UI파일 연결
#단, UI파일은 Python 코드 파일과 같은 디렉토리에 위치해야한다.
form_class = uic.loadUiType("L005.TextBrowser.ui")[0] #화면을 띄우는데 사용되는 Class 선언
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #버튼에 기능을 연결하는 코드
self.btn_clear.clicked.connect(self.fun_textBrowser_clear)
self.btn_get.clicked.connect(self.fun_textBrowser_get)
self.btn_set.clicked.connect(self.fun_textBrowser_set)
self.btn_append.clicked.connect(self.fun_textBrowser_append) def fun_textBrowser_clear(self) :
self.textBrowser.clear() #清理文本 def fun_textBrowser_get(self) :
print(self.textBrowser.toPlainText()) #获取文本 def fun_textBrowser_set(self) :
self.textBrowser.setPlainText("set") #设置文本 def fun_textBrowser_append(self) :
self.textBrowser.append("append") #追加文本 if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
lineEdit
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic form_class = uic.loadUiType("L006.LineEdit.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #버튼에 기능을 할당하는 코드
#LineEdit의 글자가 바뀔 때 기능 실행
#self.LineEdit이름.textChanged.connect(함수) #LineEdit에서 Return키(Enter키)가 눌렸을 때 기능 실행
#self.LineEdit이름.returnPressed.connect(함수)
self.lineEdit.textChanged.connect(self.fun_textChanged)
self.lineEdit.returnPressed.connect(self.fun_returnPressed)
self.btn_set.clicked.connect(self.fun_set)
self.btn_get.clicked.connect(self.fun_get) def fun_textChanged(self) :
print("textChanged") def fun_returnPressed(self) :
print("fun_returnPressed") def fun_set(self) :
#self.lineedit이름.setText("String")
#Lineedit의 글자를 바꾸는 메서드
self.lineEdit.setText("Change Text") def fun_get(self) :
#self.lineedit이름.text()
#Lineedit에 있는 글자를 가져오는 메서드
print(self.lineEdit.text()) if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
TextEdit
"""
TextEdit의 주요 함수
.toPlainText()=>PlainTextEdit에 쓰여있는 글자를 가져옵니다.
.setPlainText(String)=>PlainTextEdit에 글을 새로 입력합니다. Parameter에는 PlainTextEdit에 표시할 글자가 들어갑니다.
.appendPlainText(String)=>PlainTextEdit에 글자를 추가합니다. 추가된 글자는 다음줄에 표시되며, Parameter에는 추가할 글자가 들어갑니다.
.clear()=>PlainTextEdit에 쓰여있는 글자를 지웁니다. TextEdit 글자의 입력, 가져오기에 관한 함수
.toPlainText()=>TextEdit에 쓰여있는 글자를 가져옵니다.
.setPlainText(String)=>TextEdit에 PlainText 형식의 글을 새로 입력합니다. Parameter에는 TextEdit에 표시할 글자가 들어갑니다.
.setText(String)=>TextEdit에 RichText 형식의 글을 입력합니다. Parameter에는 TextEdit에 표시할 글자가 들어갑니다.
.append(String)=>TextEdit에 글자를 추가합니다. 추가된 글자는 다음줄에 표시되며, Parameter에는 추가할 글자가 들어갑니다.
.clear()=>TextEdit에 쓰여있는 글자를 지웁니다. TextEdit 글자의 모양에 관련된 함수
.setCurrentFont(QFont)=>TextEdit의 폰트를 바꿉니다. Parameter에는 QFont형식의 객체가 들어갑니다.
.setTextColor(QColor)=>TextEdit의 글자색을 바꿉니다. Parameter에는 QColor형식의 객체가 들어갑니다.
.setFontItalic(Boolean)=>TextEdit에 쓰여있는 글자를 기울입니다. Parameter에는 True/False값이 들어가며, True일 때 글자가 기울여집니다.
.setFontUnderline(Boolean)=>TextEdit의 글자에 밑줄을 적용합니다. Parameter에는 True/False값이 들어가며, True일 때 글자에 밑줄이 쳐집니다.
.setFontPointSize(size)=>TextEdit의 글자 크기를 변경합니다. Parameter에는 글자의 크기(숫자)가 들어갑니다. QFont
from PyQt5.QtGui import *
fontVar = QFont(FontName)
fontVar = QFont(FontName, Size) .toPlainText()=>PlainTextEdit에 쓰여있는 글자를 가져옵니다.
.setPlainText(String)=>PlainTextEdit에 글을 새로 입력합니다. Parameter에는 PlainTextEdit에 표시할 글자가 들어갑니다.
.appendPlainText(String)=>PlainTextEdit에 글자를 추가합니다. 추가된 글자는 다음줄에 표시되며, Parameter에는 추가할 글자가 들어갑니다.
.clear()=>PlainTextEdit에 쓰여있는 글자를 지웁니다. QColor
from PyQt5.QtGui import *
colorVar = QColor(Red, Green, Blue, Alpha) colorVar=>QColor의 객체이름을 의미합니다.
Red=>RGB 색상 중 Red값을 의미하며, 0부터 255사이의 정수가 들어갑니다. 값이 클 수록 빨강이 진하게 보여집니다.
Green=>RGB색상 중 Green값을 의미하며, 0부터 255사이의 정수가 들어갑니다. 값이 클 수록 초록이 진하게 보여집니다.
Blue=>RGB색상 중 Blue값을 의미하며, 0부터 255사이의 정수가 들어갑니다. 값이 클 수록 파랑이 진하게 보여집니다.
Alpha=>투명도를 의미하는 값으로 0부터 255사이의 정수가 들어갑니다. 기본값인:255 255:불투명, 0:투명 """
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import uic form_class = uic.loadUiType("L007.TextEdit.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
self.fontSize = 10 #TextEdit과 관련된 버튼에 기능 연결
self.btn_get.clicked.connect(self.fun_text_get)
self.btn_clear.clicked.connect(self.fun_text_clear)
self.btn_Italic.clicked.connect(self.fun_Italic)
self.btn_ColorRed.clicked.connect(self.fun_ColorRed)
self.btn_setFont.clicked.connect(self.fun_setFont)
self.btn_font_sizeup.clicked.connect(self.fun_font_sizeup)
self.btn_font_sizedown.clicked.connect(self.fun_font_sizedown) def fun_text_get(self) :
print(self.textEdit.toPlainText())#获取文本内容 def fun_text_clear(self) :
self.textEdit.clear()#清数据 def fun_setFont(self) :
fontvar = QFont("Apple SD Gothic Neo",10)
self.textEdit.setCurrentFont(fontvar) #设置格式 def fun_Italic(self) :
self.textEdit.setFontItalic(True)#斜体 def fun_ColorRed(self) :
colorvar = QColor(255,0,0)
self.textEdit.setTextColor(colorvar)#改变颜色 def fun_font_sizeup(self) :
self.fontSize = self.fontSize + 1
self.textEdit.setFontPointSize(self.fontSize) #字体变大 def fun_font_sizedown(self) :
self.fontSize = self.fontSize - 1
self.textEdit.setFontPointSize(self.fontSize)#字体变小 if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
comboBox
#QComboBox
"""
self.ComboBox이름.currentIndexChanged.connect(함수) #信号 获取
.currentIndex()->현재 ComboBox에서 선택된 항목의 Index를 반환합니다.
.currentText()->현재 ComboBox에서 선택된 항목의 글자를 반환합니다.
.count()->ComboBox에 몇개의 항목이 있는지를 그 개수를 반환합니다.
.itemText(index)->Index번째에 어떤 항목이 있는지 그 글자를 반환합니다. Parameter로 찾을 항목의 Index를 입력받습니다. 添加或删除
.addItem(String)->ComboBox의 맨 뒤에 항목을 추가합니다. Parameter로 추가할 항목의 글자를 입력받습니다.
.insertItem(index, String)->Index번째에 String이라는 항목을 추가합니다. Parameter로 항목을 추가할 위치(index)와 글자를 입력받습니다.
.removeItem(index)->index번째의 항목을 삭제합니다. Parameter로 삭제할 항목의 Index를 입력받습니다.
.clear()->ComboBox의 모든 항목을 삭제합니다.
"""
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic form_class = uic.loadUiType("L008.ComboBox.ui")[0] class WindowsClass(QMainWindow,form_class):
def __init__(self):
super().__init__()
self.setupUi(self) #프로그램 실행 시 두개의 ComboBox를 동기화시키는 코드
self.syncComboBox() #ComboBox에 기능 연결
self.comboBox_1.currentIndexChanged.connect(self.comboBoxFunction) #버튼에 기능 연결
self.BTN_GET.clicked.connect(self.ComboBoxItem_Get)
self.BTN_CLR.clicked.connect(self.ComboBoxItem_Clr)
self.BTN_ADD.clicked.connect(self.ComboBoxItem_Add)
self.BTN_DELET.clicked.connect(self.ComboBoxItem_Del) def syncComboBox(self) :
for i in range(0,self.comboBox_1.count()) :
self.comboBox_2.addItem(self.comboBox_1.itemText(i)) #添加数据 def comboBoxFunction(self) :
self.label.setText(self.comboBox_1.currentText())#当前文字显示在label 上 def ComboBoxItem_Add(self) :
self.comboBox_1.addItem(self.lineEdit.text())#获取文本框内数据到comboBox
self.comboBox_2.addItem(self.lineEdit.text())
#self.comboBox_1.insertItem(0,"111")
print("Item Added") def ComboBoxItem_Clr(self) :
self.comboBox_1.clear() #清理combobox 的全部数据
self.comboBox_2.clear() def ComboBoxItem_Get(self) :
print(self.comboBox_1.currentText())#选中comboBox的 内容并打印 def ComboBoxItem_Del(self) :
self.delidx = self.comboBox_2.currentIndex() #获得选中的index
self.comboBox_1.removeItem(self.delidx) #移除
self.comboBox_2.removeItem(self.delidx)
print("Item Deleted") if __name__ == "__main__" :
app=QApplication(sys.argv)
myWindow=WindowsClass()
myWindow.show()
app.exec_()
SpinBox, DoubleSpinBox
"""
SpinBox, DoubleSpinBox
Minumum : 이 SpinBox에서 가질 수 있는 최소값을 의미합니다.
Maximum : 이 SpinBox에서 가질 수 있는 최대값을 의미합니다.
SingleStep : 버튼을 눌렀을 때 숫자가 한번에 얼마나 늘어나고 줄어들지를 지정합니다.
Value : SpinBox에서 값을 조절하지 않았을 때, 기본적으로 보여줄 값을 지정합니다. self.SpinBox/DoubleSpinBox이름.valueChanged.connect(함수) 현재 상태의 반환
.value()->현재 SpinBox에 있는 값을 반환합니다.
.minimum()->현재 SpinBox의 최솟값을 반환합니다.
.maximum()->현재 SpinBox의 최댓값을 반환합니다.
.singleStep()->현재 SpinBox의 singleStep의 크기를 반환합니다. SpinBox의 상태 변경
.setRange(min,max)->SpinBox의 최대,최솟값을 변경합니다.
Parameter로 SpinBox의 새로운 최솟값과 최댓값을 입력받습니다.
QSpinBox에서는 정수값을, QDoubleSpinBox에서는 실수값을 입력할 수 있습니다.
.setSingleStep(Value)->SpinBox의 Step크기를 변경합니다.
Parameter로 새로운 Step의 값을 입력받습니다.
QSpinBox에서는 정수값을, QDoubleSpinBox에서는 실수값을 입력할 수 있습니다. """ import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("L009.SpinBox_DoubleSpinBox.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) self.spinBox.valueChanged.connect(self.spinBox_Val)
self.BTN1_INFO.clicked.connect(self.spinBox_Info)
self.BTN1_CHAN.clicked.connect(self.spinBox_Change) self.doubleSpinBox.valueChanged.connect(self.doubleSpinBox_Val)
self.BTN2_INFO.clicked.connect(self.doubleSpinBox_Info)
self.BTN2_CHAN.clicked.connect(self.doubleSpinBox_Change) def spinBox_Val(self):
print(self.spinBox.value()) #获取 值 def spinBox_Info(self): #最大值,最小值, 不进
print("Maximum value is",self.spinBox.maximum())
print("Minimum value is",self.spinBox.minimum())
print("Step Size is",self.spinBox.singleStep()) def spinBox_Change(self):
self.spinBox.setRange(0,1000)#设置范围
self.spinBox.setSingleStep(10)#设置不进 def doubleSpinBox_Val(self):
print(self.doubleSpinBox.value()) #获取 值 def doubleSpinBox_Info(self): #最大值,最小值, 不进
print("Maximum value is",self.doubleSpinBox.maximum())
print("Minimum value is",self.doubleSpinBox.minimum())
print("Step Size is",self.doubleSpinBox.singleStep()) def doubleSpinBox_Change(self):
self.doubleSpinBox.setRange(0,100)#设置范围
self.doubleSpinBox.setSingleStep(1.5)#设置不进 if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
Slider,Dial
"""
Slider,Dial
Value : QSlider의 값을 의미합니다.
Minumum : QSlider가 가질 수 있는 가장 작은 값을 의미합니다.
Maximum : Qslider가 가질 수 있는 가장 큰 값을 의미합니다.
SingleStep : Slider를 옮기거나, 방향키를 눌러 이동할 수 있는 최소한의 값을 의미합니다.
PageStep : SingleStep보다는 조금 큰 개념으로 Page Up/Down등의 키를 눌렀을 때 이동할 수 있는 값을 의미합니다. Slider와 Dial의 Slider가 움직였을 때 기능 실행
self.Slider/Dial이름.sliderMoved.connect(함수) Slider와 Dial의 값이 바뀌었을 때 기능 실행
self.Slider/Dial이름.valueChanged.connect(함수) Slider와 Dial의 범위가 바뀌었을 때 기능 실행
self.Slider/Dial이름.rangeChanged.connect(함수) 현재 상태의 반환 str()를 이용하여 String형(문자열)로 바꾼후 사용
.value()->Slider 혹은 Dial의 현재값을 반환합니다.
.minimum()->Slider 혹은 Dial의 최솟값을 반환합니다.
.maximum()->Slider 혹은 Dial의 최댓값을 반환합니다.
.singleStep()->Slider 혹은 Dial의 singleStep의 크기를 반환합니다.
.pageStep()->Slider 혹은 Dial의 pageStep의 크기를 반환합니다. Slider와 Dial의 상태 변경
.setMaximum(Max)->Slider, Dial의 최댓값을 설정합니다. Parameter로 Slider와 Dial의 새로운 최댓값을 입력받습니다.
.setMinimum(Min)->Slider, Dial의 최솟값을 설정합니다. Parameter로 Slider와 Dial의 새로운 최솟값을 입력받습니다.
.setSingleStep(Value)->Slider, Dial의 SingleStep의 크기를 설정합니다. Parameter로 Slider와 Dial의 새로운 SIngleStep의 값을 입력받습니다.
.setPageStep(Value)->Slider, Dial의 PageStep을 설정합니다. Parameter로 Slider와 Dial의 새로운 PageStep을 입력받습니다.
.setRange(Max,Min)->Slider, Dial의 범위를 변경합니다. Parameter로 Slider와 Dial의 새로운 최댓값과 최솟값을 입력받습니다.
.setValue(Value)->Slider, Dial의 값을 설정합니다. Parameter로 Slider와 Dial의 값을 입력받습니다.
""" import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic form_class = uic.loadUiType("L010.Slider_Dial.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #Vertical Slider의 시그널 사용
self.verticalSlider.valueChanged.connect(self.showVerticalSliderValue)
self.verticalSlider.rangeChanged.connect(self.printRangeChanged) #Horizontal Slider의 시그널 사용
self.horizontalSlider.valueChanged.connect(self.showHorizontalSliderValue)
self.horizontalSlider.rangeChanged.connect(self.printRangeChanged) #Dial의 시그널 사용
self.dial.valueChanged.connect(self.showDialValue)#valueChanged 改变值
self.dial.rangeChanged.connect(self.printRangeChanged)#rangeChanged 改变范围 #버튼에 기능 연결
self.btn_v_info.clicked.connect(self.getVerticalInfo)
self.btn_v_range.clicked.connect(self.setVertical)
self.btn_h_info.clicked.connect(self.getHorizontalInfo)
self.btn_h_range.clicked.connect(self.setHorizontal)
self.btn_d_info.clicked.connect(self.getDialInfo)
self.btn_d_range.clicked.connect(self.setDial) def printRangeChanged(self) :
print("Range Changed") #Vertical Slider에 관련된 함수들 def showVerticalSliderValue(self) :
#Vertical Slider의 시그널 이용 - Vertical Slider의 값이 변경되면 Label에 값을 표시
self.label_v_val.setText(str(self.verticalSlider.value())) def getVerticalInfo(self) :
#Vertical Slider의 최대/최솟값과 PageStep/SingleStep값을 출력합니다.
print("Maximum : " + str(self.verticalSlider.maximum()))
print("Minimum : " + str(self.verticalSlider.minimum()))
print("PageStep : " + str(self.verticalSlider.pageStep()))
print("SingleStep : " + str(self.verticalSlider.singleStep())) def setVertical(self) :
#Vertical Slider의 최대/최솟값과 PageStep/SingleStep값을 변경합니다.
self.verticalSlider.setMaximum(500)
self.verticalSlider.setMinimum(-500)
self.verticalSlider.setPageStep(100)
self.verticalSlider.setSingleStep(20) #Horizontal Slider에 관련된 함수들 def showHorizontalSliderValue(self) :
#Horizontal Slider의 시그널 이용 - Horizontal Slider의 값이 변경되면 Label에 값을 표시
self.label_h_val.setText(str(self.horizontalSlider.value())) def getHorizontalInfo(self) :
#Horizontal Slider의 최대/최솟값과 PageStep/SingleStep값을 출력합니다.
print("Maximum : " + str(self.horizontalSlider.maximum()))
print("Minimum : " + str(self.horizontalSlider.minimum()))
print("PageStep : " + str(self.horizontalSlider.pageStep()))
print("SingleStep : " + str(self.horizontalSlider.singleStep())) def setHorizontal(self) :
#Horizontal Slider의 최대/최솟값과 PageStep/SingleStep값을 변경합니다.
self.horizontalSlider.setMaximum(500) #设置最大值
self.horizontalSlider.setMinimum(-500) #设置最小值
self.horizontalSlider.setPageStep(100)
self.horizontalSlider.setSingleStep(20) #一次不进 #Dial에 관련된 함수들
def showDialValue(self) :
#Dial의 시그널 이용 - Dial의 값이 변경되면 Label에 값을 표시
self.label_dial.setText(str(self.dial.value())) def getDialInfo(self) :
#Dial의 최대/최솟값과 PageStep/SingleStep값을 출력합니다.
print("Maximum : " + str(self.dial.maximum()))
print("Minimum : " + str(self.dial.minimum()))
print("PageStep : " + str(self.dial.pageStep()))
print("SingleStep : " + str(self.dial.singleStep())) def setDial(self) :
#Dial의 최대/최솟값과 PageStep/SingleStep값을 변경합니다.
self.dial.setMaximum(500)
self.dial.setMinimum(-500)
self.dial.setPageStep(100)
self.dial.setSingleStep(20) if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
DateTimeEdit
"""
DateTimeEdit
DateTimeEdit의 날짜와 시간이 바뀌었을 때 기능 실행
self.DateTimeEdit이름.dateTimeChanged.connect(함수) DateTimeEdit의 날짜가 바뀌었을 때 기능 실행
self.DateTimeEdit이름.dateChanged.connect(함수) DateTimeEdit의 시간이 바뀌었을 때 기능 실행
self.DateTimeEdit이름.timeChanged.connect(함수) 표시예는 [2019-01-14 월요일 오후 8시 7분 6초] 를 표시한다고 가정합니다. 연도->yyyy->연도를 전체 다 표시합니다->2019
월->MM->월을 숫자로 표시합니다->01
월->MMM->월을 영어단어 약자로 표시합니다->Jan
월->MMMM->월을 영어단어로 표시합니다->January
일->dd->일을 숫자로 표시합니다->14
일->ddd->요일을 영어단어 약자로 표시합니다->Mon
일->dddd->요일을 영어단어로 표시합니다->Monday
시간->AP->AM/PM(오전/오후)를 표시합니다->AP사용 - 8 PM, AP미사용 - 20시
시간->h->시간을 표시합니다->8
시간->hh->시간을 표시합니다. 시간이 한자리수 일 경우, 앞에 0을 붙입니다.->08
분->m->분을 표시합니다->7
분->mm->분을 표시합니다. 분이 한자리수 일 경우, 앞에 0을 붙입니다.->07
초->s->초를 표시합니다->6
초->ss->초를 표시합니다. 초가 한자리수 일 경우, 앞에 0을 붙입니다.->06 현재 상태의 반환
.dateTime()->QDateTimeEdit의 날짜, 시간값을 반환합니다. QDateTime형태의 객체가 반환됩니다.
.date()->QDateTimeEdit의 날짜값을 반환합니다. QDate형태의 객체가 반환됩니다.
.time()->QDateTimeEdit의 시간값을 반환합니다. QTime형태의 객체가 반환됩니다.
.maximumDateTime()->QDateTimeEdit의 날짜/시간값의 최댓값을 반환합니다. QDateTime형태의 객체가 반환됩니다.
.maximumDate()->QDateTimeEdit의 날짜값의 최댓값을 반환합니다. QDate형태의 객체가 반환됩니다.
.maximumTime()->QDateTimeEdit의 시간값의 최댓값을 반환합니다. QTime형태의 객체가 반환됩니다.
.minimumDateTime()->QDateTimeEdit의 날짜/시간값의 최솟값을 반환합니다. QDateTime형태의 객체가 반환됩니다.
.minimumDate()->QDateTimeEdit의 날짜값의 최솟값을 반환합니다. QDate형태의 객체가 반환됩니다.
.minimumTime()->QDateTimeEdit의 시간값의 최솟값을 반환합니다. QTime형태의 객체가 반환됩니다.
ex:
self.dateTimeVar = self.dateTimeEdit.dateTime()
self.dateVar = self.dateTimeEdit.date()
self.timeVar = self.dateTimeEdit.time() QDateTimeEdit의 값 변경
.setDateTime(QDateTime)->QDateTimeEdit의 날짜/시간값을 설정합니다. Parameter로 새로 설정할 날짜/시간값을 가진 QDateTime 객체가 필요합니다.
.setDate(QDate)->QDateTimeEdit의 날짜값을 반환합니다. Parameter로 새로 설정할 날짜값을 가진 QDate 객체가 필요합니다.
.setTime(QTime)->QDateTimeEdit의 시간값을 반환합니다. Parameter로 새로 설정할 시간값을 가진 QTime 객체가 필요합니다. QDateTimeEdit과 입력/표시 형식과 관련된 함수
.calendarPopup()->QDateTimeEdit의 CalendarPopup이 속성이 참인지, 거짓인지를 반환해줍니다.
.setCalendarPopup(bool)->QDateTimeEdit의 CalendarPopup 속성을 변경할 수 있는 함수입니다. Parameter로 True/False 값이 들어갑니다.
.setDisplayFormat(Format Text)->QDateTimeEdit이 어떤 형식으로 날짜와 시간을 보여줄지를 설정합니다. Parameter로 형식문자가 들어갑니다. QDateTimeEdit의 날짜/시간의 최대/최소에 관련된 함수들
.setDateTimeRange(min, max)->QDateTimeEdit의 날짜/시간 범위를 설정합니다. Parameter로 날짜/시간의 최솟값, 최댓값을 입력받습니다.
.setDateRange(min, max)->QDateTimeEdit의 날짜 범위를 설정합니다. Parameter로 날짜의 최솟값, 최댓값을 입력받습니다.
.setTimeRange(min, max)->QDateTimeEdit의 시간 범위를 설정합니다. Parameter로 시간의 최솟값, 최댓값을 입력받습니다.
.setMaximumDateTime(max)->QDateTimeEdit의 날짜/시간값의 최댓값을 설정합니다. Parameter로 새로운 날짜/시간의 최댓값을 입력받습니다.
.setMaximumDate(max)->QDateTimeEdit의 날짜값의 최댓값을 설정합니다. Parameter로 새로운 날짜의 최댓값을 입력받습니다.
.setMaximumTime(max)->QDateTimeEdit의 시간값의 최댓값을 설정합니다. Parameter로 새로운 시간의 최댓값을 입력받습니다.
.setMinimumDateTime(min)->QDateTimeEdit의 날짜/시간값의 최솟값을 설정합니다. Parameter로 새로운 날짜/시간의 최솟값을 입력받습니다.
.setMinimumDate(min)->QDateTimeEdit의 날짜값의 최솟값을 설정합니다. Parameter로 새로운 날짜의 최솟값을 입력받습니다.
.setMinimumTime(min)->QDateTimeEdit의 시간값의 최솟값을 설정합니다. Parameter로 새로운 시간의 최솟값을 입력받습니다.
.clearMaximumDateTime()->QDateTimeEdit의 날짜/시간값의 최댓값을 기본값으로 변경합니다. 기본값은 7999년 12월 31일 23시 59분 59초입니다.
.clearMaximumDate()->QDateTimeEdit의 날짜값의 최댓값을 기본값으로 변경합니다. 기본값은 7999년 12월 31일 입니다.
.clearMaximumTime()->QDateTimeEdit의 시간값의 최댓값을 기본값으로 변경합니다. 기본값은 23시 59분 59초입니다.
.clearMinimumDateTime()->QDateTimeEdit의 날짜/시간값의 최솟값을 기본값으로 변경합니다. 기본값은 1752년 9월 14일 0시 0분 0초 입니다.
.clearMinimumDate()->QDateTimeEdit의 날짜값의 최솟값을 기본값으로 변경합니다. 기본값은 1752년 9월 14일 입니다.
.clearMinimumTime()->QDateTimeEdit의 시간값의 최솟값을 기본값으로 변경합니다. 기본값은 0시 0분 0초 입니다. """ import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import uic form_class = uic.loadUiType("L011.DateTimeEdit.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #프로그램이 실행되면 DateTimeEdit의 값이 현재 날짜/시간으로 설정되게 하기
self.currentDateTime = QDateTime.currentDateTime()
self.dateTimeEdit_Test.setDateTime(self.currentDateTime) #버튼들에 기능 할당
self.btn_displayDateTime.clicked.connect(self.displayDateTime)
self.btn_enterDateTime.clicked.connect(self.enterDateTimeFunc)
self.btn_enterDate.clicked.connect(self.enterDateFunc)
self.btn_enterTime.clicked.connect(self.enterTimeFunc)
self.btn_changeFormat.clicked.connect(self.changeDisplayFormat)
self.btn_showRange.clicked.connect(self.showRangeFunc)
self.btn_editMaximum.clicked.connect(self.extendMaximum)
self.btn_editMinimum.clicked.connect(self.extendMinimum) def displayDateTime(self) :
#DateTimeEdit의 값을 사용할 때는 아래와 같이 객체를 만들고, 그 객체에 값을 저장한 후 사용해야 합니다.
self.displayDateTimeVar = self.dateTimeEdit_Test.dateTime()
self.displayDateVar = self.dateTimeEdit_Test.date()
self.displayTimeVar = self.dateTimeEdit_Test.time() #QDateTime, QDate, QTime 객체들의 값을 Label에 표시합니다.
#toString 함수는 02.12QDateTimeEdit의 하위페이지에 있는 QDateTime, QDate, QTime 함수를 참고하시기 바랍니다.
self.lbl_displayDateTime.setText(self.displayDateTimeVar.toString("yyyy-MM-dd AP hh:mm:ss"))
self.lbl_displayDate.setText(self.displayDateVar.toString("yyyy-MM-dd"))
self.lbl_displayTime.setText(self.displayTimeVar.toString("AP hh:mm:ss")) def enterDateTimeFunc(self) :
#LineEdit에서 글자를 가져온 후, fromString 함수를 이용해서 QDateTime객체를 만듭니다.
#그 후, setDateTime 함수를 이용해 DateTimeEdit에 적용합니다.
self.enterDateTimeText = self.line_dateTime.text()
self.enterDateTimeVar = QDateTime.fromString(self.enterDateTimeText, "yyyy-MM-dd AP hh:mm:ss")
self.dateTimeEdit_Test.setDateTime(self.enterDateTimeVar) def enterDateFunc(self) :
#LineEdit에서 글자를 가져온 후, fromString 함수를 이용해서 QDate객체를 만듭니다.
#그 후, setDate 함수를 이용해 DateTimeEdit에 적용합니다.
self.enterDateText = self.line_date.text()
self.enterDateVar = QDate.fromString(self.enterDateText, "yyyy-MM-dd")
self.dateTimeEdit_Test.setDate(self.enterDateVar) def enterTimeFunc(self) :
#LineEdit에서 글자를 가져온 후, fromString 함수를 이용해서 QTime객체를 만듭니다.
#그 후, setTime 함수를 이용해 DateTimeEdit에 적용합니다.
self.enterTimeText = self.line_time.text()
self.enterTimeVar = QTime.fromString(self.enterTimeText, "AP hh:mm:ss")
self.dateTimeEdit_Test.setTime(self.enterTimeVar) def changeDisplayFormat(self) :
#LineEdit에서 글자를 가져온 후, 그 글자를 DateTimeEdit의 형식문자로 지정합니다.
self.displayFormatText = self.line_displayFormat.text()
self.dateTimeEdit_Test.setDisplayFormat(self.displayFormatText) def showRangeFunc(self) :
print(self.dateTimeEdit_Test.minimumDateTime())
print(self.dateTimeEdit_Test.maximumDateTime()) def extendMaximum(self) :
#DateTimeEdit의 현재 maximumDateTime을 가져옵니다.
#그 후 addDays 함수를 이용하여 최댓값을 10일 연장시킨 후, setMaximumDateTime을 이용하여 DateTimeEdit에 적용시킵니다.
self.currentMaximumDateTime = self.dateTimeEdit_Test.maximumDateTime()
self.currentMaximumDateTime = self.currentMaximumDateTime.addDays(10)
self.dateTimeEdit_Test.setMaximumDateTime(self.currentMaximumDateTime) def extendMinimum(self) :
#DateTimeEdit의 현재 minimumDateTime을 가져옵니다.
#그 후 addDays 함수를 이용하여 최솟값을 10일 뒤로 미룬 후, setMinimumDateTime을 이용하여 DateTimeEdit에 적용시킵니다.
self.currentMinimumDateTime = self.dateTimeEdit_Test.minimumDateTime()
self.currentMinimumDateTime = self.currentMinimumDateTime.addDays(-10)
self.dateTimeEdit_Test.setMinimumDateTime(self.currentMinimumDateTime) if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
DateEdit,TimeEdit
#DateEdit,TimeEdit
"""
DateEdit의 날짜가 바뀌었을 때 기능 실행
self.DateEdit이름.dateChanged.connect(함수) TimeEdit의 시간이 바뀌었을 때 기능 실행
self.TimeEdit이름.timeChanged.connect(함수) 현재 상태의 반환
.date()->QDateEdit의 날짜값을 반환합니다. QDate형태의 객체가 반환됩니다.
.maximumDate()->QDateEdit의 날짜값의 최댓값을 반환합니다. QDate형태의 객체가 반환됩니다.
.minimumDate()->QDateEdit의 날짜값의 최솟값을 반환합니다. QDate형태의 객체가 반환됩니다.
self.dateVar = self.dateEdit.date() QDateEdit의 값과 입력/표시형식
.setDate(QDate)->QDateEdit의 날짜값을 반환합니다. Parameter로 새로 설정할 날짜값을 가진 QDate 객체가 필요합니다.
.calendarPopup()->QDateEdit의 CalendarPopup이 속성이 참인지, 거짓인지를 반환해줍니다.
.setCalendarPopup(bool)->QDateEdit의 CalendarPopup 속성을 변경할 수 있는 함수입니다. Parameter로 True/False 값이 들어갑니다.
.setDisplayFormat(Format Text)->QDateEdit이 어떤 형식으로 날짜와 시간을 보여줄지를 설정합니다. Parameter로 형식문자가 들어갑니다. QDateEdit의 최대/최소에 관련된 함수들
.setDateRange(min, max)->QDateEdit의 날짜 범위를 설정합니다. Parameter로 날짜의 최솟값, 최댓값을 입력받습니다.
.setMaximumDate(max)->QDateEdit의 날짜값의 최댓값을 설정합니다. Parameter로 새로운 날짜의 최댓값을 입력받습니다.
.setMinimumDate(min)->QDateEdit의 날짜값의 최솟값을 설정합니다. Parameter로 새로운 날짜의 최솟값을 입력받습니다.
.clearMaximumDate()->QDateEdit의 날짜값의 최댓값을 기본값으로 변경합니다. 기본값은 7999년 12월 31일 입니다.
.clearMinimumDate()->QDateEdit의 날짜값의 최솟값을 기본값으로 변경합니다. 기본값은 1752년 9월 14일 입니다. QTimeEdit의 함수
.time()->QTimeEdit의 시간값을 반환합니다. QTime형태의 객체가 반환됩니다.
.maximumTime()->QTimeEdit의 시간값의 최댓값을 반환합니다. QTime형태의 객체가 반환됩니다.
.minimumTime()->QTimeEdit의 시간값의 최솟값을 반환합니다. QTime형태의 객체가 반환됩니다.
self.timeVar = self.timeEdit.time() QDateEdit의 값과 표시형식
.setTime(QTime)->QTimeEdit의 시간값을 반환합니다. Parameter로 새로 설정할 시간값을 가진 QTime 객체가 필요합니다.
.setDisplayFormat(Format Text)->QTimeEdit이 어떤 형식으로 날짜와 시간을 보여줄지를 설정합니다. Parameter로 형식문자가 들어갑니다. QTimeEdit의 시간의 최대/최소에 관련된 함수들
.setTimeRange(min, max)->QTimeEdit의 시간 범위를 설정합니다. Parameter로 시간의 최솟값, 최댓값을 입력받습니다.
.setMaximumTime(max)->QTimeEdit의 시간값의 최댓값을 설정합니다. Parameter로 새로운 시간의 최댓값을 입력받습니다.
.setMinimumTime(min)->QTimeEdit의 시간값의 최솟값을 설정합니다. Parameter로 새로운 시간의 최솟값을 입력받습니다.
.clearMaximumTime()->QTimeEdit의 시간값의 최댓값을 기본값으로 변경합니다. 기본값은 23시 59분 59초입니다.
.clearMinimumTime()->QTimeEdit의 시간값의 최솟값을 기본값으로 변경합니다. 기본값은 0시 0분 0초 입니다. """ import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import uic form_class = uic.loadUiType("L012.DateEdit_TimeEdit.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #프로그램이 실행되면 DateEdit의 값이 현재 날짜/시간으로 설정되게 하기
self.currentDate = QDate.currentDate()
self.dateEdit_Test.setDate(self.currentDate) #프로그램이 실행되면 TimeEdit의 값이 현재 날짜/시간으로 설정되게 하기
self.currentTime = QTime.currentTime()
self.timeEdit_Test.setTime(self.currentTime) #버튼들에 기능 할당
self.btn_time_display.clicked.connect(self.time_display)
self.btn_time_enter.clicked.connect(self.time_enterFunc)
self.btn_time_changeFormat.clicked.connect(self.time_changeDisplayFormat) #버튼들에 기능 할당
self.btn_date_display.clicked.connect(self.date_display)
self.btn_date_enter.clicked.connect(self.date_enterFunc)
self.btn_date_changeFormat.clicked.connect(self.date_changeDisplayFormat)
self.btn_date_showRange.clicked.connect(self.date_showRangeFunc)
self.btn_date_editMaximum.clicked.connect(self.date_extendMaximum)
self.btn_date_editMinimum.clicked.connect(self.date_extendMinimum) def date_display(self) :
self.displayDateVar = self.dateEdit_Test.date()
self.lbl_date_display.setText(self.displayDateVar.toString("yyyy-MM-dd")) def date_enterFunc(self) :
#LineEdit에서 글자를 가져온 후, fromString 함수를 이용해서 QDate객체를 만듭니다.
#그 후, setDate 함수를 이용해 DateEdit에 적용합니다.
self.enterDateText = self.line_date.text()
self.enterDateVar = QDate.fromString(self.enterDateText, "yyyy-MM-dd")
self.dateEdit_Test.setDate(self.enterDateVar) def date_changeDisplayFormat(self) :
#LineEdit에서 글자를 가져온 후, 그 글자를 DateEdit의 형식문자로 지정합니다.
self.displayFormatText = self.line_date_displayFormat.text()
self.dateEdit_Test.setDisplayFormat(self.displayFormatText) def date_showRangeFunc(self) :
print(self.dateEdit_Test.minimumDate())
print(self.dateEdit_Test.maximumDate()) def date_extendMaximum(self) :
#DateEdit의 현재 maximumDate을 가져옵니다.
#그 후 addDays 함수를 이용하여 최댓값을 10일 연장시킨 후, setMaximumDate을 이용하여 DateEdit에 적용시킵니다.
self.currentMaximumDate = self.dateEdit_Test.maximumDate()
self.currentMaximumDate = self.currentMaximumDate.addDays(10)
self.dateEdit_Test.setMaximumDate(self.currentMaximumDate) def date_extendMinimum(self) :
#DateEdit의 현재 minimumDate을 가져옵니다.
#그 후 addDays 함수를 이용하여 최솟값을 10일 뒤로 미룬 후, setMinimumDate을 이용하여 DateEdit에 적용시킵니다.
self.currentMinimumDate = self.dateEdit_Test.minimumDate()
self.currentMinimumDate = self.currentMinimumDate.addDays(-10)
self.dateEdit_Test.setMinimumDate(self.currentMinimumDate) def time_display(self) :
self.displayTimeVar = self.timeEdit_Test.time()
self.lbl_time_display.setText(self.displayTimeVar.toString("AP hh:mm:ss")) def time_enterFunc(self) :
#LineEdit에서 글자를 가져온 후, fromString 함수를 이용해서 QTime객체를 만듭니다.
#그 후, setTime 함수를 이용해 TimeEdit에 적용합니다.
self.enterTimeText = self.line_time.text()
self.enterTimeVar = QTime.fromString(self.enterTimeText, "AP hh:mm:ss")
self.timeEdit_Test.setTime(self.enterTimeVar) def time_changeDisplayFormat(self) :
#LineEdit에서 글자를 가져온 후, 그 글자를 TimeEdit의 형식문자로 지정합니다.
self.displayFormatText = self.line_time_displayFormat.text()
self.timeEdit_Test.setDisplayFormat(self.displayFormatText) if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
calendarWidget
#CalendarWidget
"""
CalendarWidget에서 날짜가 클릭되었을 때 기능 실행
self.CalendarWidget이름.clicked.connect(함수) CalendarWidget에서 선택된 날짜가 바뀌었을 때 기능 실행
self.CalendarWidget이름.selectionChanged.connect(함수) CalendarWidget에서 달력을 다른 페이지로 넘겼을 때 기능 실행
self.CalendarWidget이름.currentPageChanged.connect(함수) 현재 상태의 반환
.selectedDate()->QCalendarWidget에서 선택된 날짜를 반환합니다. 반환된 값은 QDate의 형식을 갖습니다.
.maximumDate()->QCalendarWidget에서 선택할 수 있는 날짜의 최댓값을 반환합니다. 반환된 값은 QDate의 형식을 갖습니다.
.minimumDate()->QCalendarWidget에서 선택할 수 있는 날짜의 최솟값을 반환합니다. 반환된 값은 QDate의 형식을 갖습니다.
.yearShown()->QCalendarWidget에서 현재 보여주고 있는 연도를 int 형식으로 반환합니다.
.monthShown()->QCalendarWidget에서 현재 보여주고 있는 월을 int 형식으로 반환합니다. Calendar의 페이지 이동
.setCurrentPage(year,month)->현재 페이지를 원하는 연도, 월로 이동합니다. Parameter로 이동하고자 하는 년도, 월의 값을 필요로 합니다.
.showNextYear()->현재 달력에서 내년의 달력을 보여주는 함수입니다.
.showNextMonth()->현재 달력에서 다음달의 달력을 보여주는 함수입니다.
.showPreviousYear()->현재 달력에서 작년의 달력을 보여주는 함수입니다.
.showPreviousMonth()->현재 달력에서 저번달의 달력을 보여주는 함수입니다.
.showToday()->오늘 날짜가 있는 달력을 보여주는 함수입니다. Calendar의 상태변경
.setSelectedDate(QDate)->원하는 날짜가 선택되게 하는 함수입니다. Parameter로 선택할 날짜의 값이 들어있는 QDate 형식의 객체를 필요로 합니다.
.setDateRange(min,max)->QCalendarWidget이 보여줄 날짜의 최대/최솟값을 설정합니다. Parameter로 날짜의 최솟값, 최댓값을 갖고 있는 QDate 형식의 객체가 필요합니다.
.setGridVisible(bool)->달력에서 그리드를 보여줄지를 결정합니다. Parameter로 True/False가 필요하며, True를 입력하면 달력에서 그리드를 보여주게 됩니다.
"""
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import uic form_class = uic.loadUiType("L013.CalendarWidget.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #QCalendarWidget의 시그널
self.calendarWidget_Test.clicked.connect(self.calendarClicked)
self.calendarWidget_Test.currentPageChanged.connect(self.calendarPageChanged)
self.calendarWidget_Test.selectionChanged.connect(self.calendarSelectionChanged) #QCalendarWidget이 자동으로 오늘 날짜가 있는 달력을 보여주게 설정
self.todayDate = QDate.currentDate()
self.calendarWidget_Test.setCurrentPage(self.todayDate.year(), self.todayDate.month()) #버튼에 기능 연결
self.btn_prev.clicked.connect(self.prevMonth)
self.btn_next.clicked.connect(self.nextMonth)
self.btn_today.clicked.connect(self.today) #CalendarWidget의 시그널에 연결된 함수들
def calendarClicked(self) :
print(self.calendarWidget_Test.selectedDate()) def calendarPageChanged(self) :
self.year = str(self.calendarWidget_Test.yearShown()) + "년"
self.month = str(self.calendarWidget_Test.monthShown()) + "월"
self.lbl_currentPage.setText(self.year + " " + self.month) def calendarSelectionChanged(self) :
self.selectedDateVar = self.calendarWidget_Test.selectedDate()
self.lbl_selectedDate.setText(self.selectedDateVar.toString()) #버튼에 연결된 함수들
def prevMonth(self) :
self.calendarWidget_Test.showPreviousMonth() def nextMonth(self) :
self.calendarWidget_Test.showNextMonth() def today(self) :
self.calendarWidget_Test.showToday() if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
QPixmap用Label控件
#QPixmap
"""
QPixmap 객체의 생성
Pixmap은 PyQt5.QtGui에 소속되어 있습니다.
from PyQt5.QtGui import QPixmap 혹은 from PyQt5.QtGui import * 을 사용해야 합니다. QPixmap를 만들어주기 위해서는 위의 문구와 같이 QPixmap을 import 해주어야 합니다.
QPixmap을 import 했다면, 다음과 같이 QPixmap 객체를 생성해줍니다. from PyQt5.QtGui import *
qPixmapVar = QPixmap() QPixmap 객체에 이미지 불러오기 - 파일
qPixmapVar.load("사진파일경로") #상대경로 이용
qPixmapVar.load("testImage.jpg") #절대경로 이용
qPixmapVar.load("/Users/sebinlee/Desktop/Github/PyQt5forBeginner/02.15 Pixmap/testImage.jpg") qPixmapVar.loadFromData(사진 데이터가 있는 객체)
urllib.request를 import합니다.
urllib.request의 urlopen().read() 함수를 이용하여 이미지 데이터를 가져온 후, 이를 객체를 만들어 저장합니다.
2번에서 만든 객체와 .loadFromData()함수를 사용하여 QPixmap객체를 만듭니다.
import urllib.request
urlString = https://avatars1.githubusercontent.com/u/44885477?s=460&v=4
imageFromWeb = urllib.request.urlopen(urlString).read() import urllib.request
qPixmapVar = QPixmap()
qPixmapVar.loadFromDate(imageFromWeb)
label이름.setPixmap(QPixmap 객체) 이미지의 Load/Save
.load(fileName)->이미지 파일에서 이미지를 가져오는 함수입니다. Parameter로 이미지의 경로를 문자열의 형태로 입력해야 합니다.
.loadFromData(Data)->이미지의 정보값을 갖고 있는 객체에서 이미지를 가져오는 함수입니다. Parameter로 이미지의 정보값을 갖고 있는 객체를 입력해야 합니다. 주로 Web에서 이미지를 가져올 때 많이 사용합니다.
.save(fileName)->QPixmap이 가지고 있는 이미지를 파일로 저장할 때 사용합니다. Parameter로 파일의 이름을 문자열의 형태로 입력해야 합니다. 이미지의 크기와 관련된 함수
.scaled(width,height)->이미지의 가로, 세로 크기를 조절합니다. Parameter로 가로, 세로 크기값을 입력받습니다. 사진의 원본 비율을 무시하고 크기를 조정해야 할 때 사용하기 좋습니다.
.scaledToWidth(width)->이미지의 가로크기를 조절합니다. 이 함수를 이용할 경우 세로크기는 새로운 가로값에 따라서 자동으로 조절되며, 이미지의 가로세로 비율은 원본과 동일하게 유지됩니다. Parameter로 가로크기값을 입력합니다.
.scaledToHeight(height)->이미지의 세로크기를 조절합니다. 이 함수를 이용할 경우, 가로크기는 새로운 세로값에 따라서 자동으로 조절되며, 이미지의 가로세로 비율은 원본과 동일하게 유지됩니다. Parameter로 세로크기값을 입력합니다.
.size()->QPixmap이 가지고 있는 이미지의 크기를 QSize형식으로 반환합니다. Pixmap과 관련된 Label의 함수
.setPixmap(QPixmap)->Label의 영역에 사진을 표시합니다. Parameter로 표시할 이미지값을 가지고 있는 QPixmap객체가 필요합니다.
.pixmap()->Label이 표시하고 있는 사진을 반환합니다. 반환된 값은 QPixmap객체의 형식을 가집니다.
"""
import sys
import urllib.request
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import uic form_class = uic.loadUiType("L014.Pixmap.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) self.btn_LoadFromFile.clicked.connect(self.loadImageFromFile)
self.btn_LoadFromWeb.clicked.connect(self.loadImageFromWeb)
self.btn_Save.clicked.connect(self.saveImageFromWeb) def loadImageFromFile(self) :
#QPixmap 객체 생성 후 이미지 파일을 이용하여 QPixmap에 사진 데이터 Load하고, Label을 이용하여 화면에 표시
self.qPixmapFileVar = QPixmap()
self.qPixmapFileVar.load("testImage.png")
self.qPixmapFileVar = self.qPixmapFileVar.scaledToWidth(600)
self.lbl_picture.setPixmap(self.qPixmapFileVar) def loadImageFromWeb(self) : #Web에서 Image 정보 로드
urlString = "https://avatars1.githubusercontent.com/u/44885477?s=460&v=4"
imageFromWeb = urllib.request.urlopen(urlString).read() #웹에서 Load한 Image를 이용하여 QPixmap에 사진데이터를 Load하고, Label을 이용하여 화면에 표시
self.qPixmapWebVar = QPixmap()
self.qPixmapWebVar.loadFromData(imageFromWeb)
self.qPixmapWebVar = self.qPixmapWebVar.scaledToWidth(600)
self.lbl_picture.setPixmap(self.qPixmapWebVar) def saveImageFromWeb(self) :#保存照片
#Label에서 표시하고 있는 사진 데이터를 QPixmap객체의 형태로 반환받은 후, save함수를 이용해 사진 저장
self.qPixmapSaveVar = self.lbl_picture.pixmap()
self.qPixmapSaveVar.save("SavedImage.jpg") if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
QTimer
#QTimer
"""
from PyQt.QtCore import *
timerVar = QTimer() QTimer의 조작과 관련된 함수
.start()->QTimer가 시간을 체크하기 시작합니다.
.start(msec)->QTimer가 Parameter만큼의 시간이 지난 후 시간을 체크하기 시작합니다. Parameter로 시간을 입력해야 하며, 단위는 ms입니다.
.stop()->QTimer를 중지합니다. QTimer의 Interval과 관련된 함수
.setInterval(msec)->QTimer의 Interval을 설정합니다. Parameter로 Interval을 ms단위로 입력합니다.
.timeout.connect(함수)->매 Interval마다 어떤 함수를 실행할지를 결정합니다. 만약, setInterval 함수로 Interval을 설정하지 않은 경우, 1ms마다 함수가 반복됩니다. QTimer의 상태반환
.interval()->QTimer의 Interval을 반환합니다.
.isActive()->QTimer가 작동중인지 체크합니다. QTimer가 작동중이면 True를, 멈춰있으면 False를 반환합니다. """
from PyQt5.QtCore import *
time = 0# time이라는 변수를 만들고
def printTime() :#매 초마다 실행될 printTime()이라는 함수를 만듭니다
time += 1
print(time) timerVar = QTimer()
timerVar.setInterval(1000)
timerVar.timeout.connect(printTime)
timerVar.start()
ProgressBar
#ProgressBar
"""
QProgressBar의 값이 변경되었을 때 self.ProgressBar이름.valueChanged.connect(함수) QProgressBar의 값에 관련된 함수
.value()->QProgressBar가 가지고 있는 현재값을 반환합니다.
.setValue(Value)->QProgressBar에 새로운 Value값을 설정합니다. Parameter로 새로운 Value값이 필요합니다.
.reset()->QProgressBar의 Value값을 초기화합니다. 이때 Value값은 QProgressBar의 최솟값 - 1을 한 값으로 초기화됩니다. QProgressBar의 범위와 관련된 함수
.minimum()->QProgressBar의 최솟값을 반환합니다.
.maximum()->QProgressBar의 최댓값을 반환합니다.
.setMinimum(min)->QProgressBar의 최솟값을 새로 설정합니다. Parameter로 새로운 최솟값이 필요합니다.
.setMaximum(min)->QProgressBar의 최솟값을 새로 설정합니다. Parameter로 새로운 최댓값이 필요합니다.
.setRange(min,max)->QProgressBar의 최솟값과 최댓값을 새로 설정합니다. Parameter로 새로운 최솟값, 최댓값이 필요합니다.
"""
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import uic form_class = uic.loadUiType("L015.ProgressBar.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #ProgressBar의 시그널
self.progressBar_Test.valueChanged.connect(self.printValue) #QTimer를 이용하여 매초마다 ProgressBar의 값이 1씩 늘어나게 설정합니다.
#QTimer의Interval을 1000으로 설정한 후, ProgrssBar의 값이 늘어나게 하는 함수를 연결하고 QTimer를 시작합니다.
#QTimer에 대한 설명은 02.17.01 QTimer에서 보실 수 있습니다.
self.timerVar = QTimer()
self.timerVar.setInterval(1000)
self.timerVar.timeout.connect(self.progressBarTimer)
self.timerVar.start() def progressBarTimer(self) :
self.time = self.progressBar_Test.value()
self.time += 1
self.progressBar_Test.setValue(self.time) #ProgressBar의 값이 최댓값 이상이 되면 Timer를 중단시켜 ProgressBar의 값이 더이상 증가하지 않게 합니다.
if self.time >= self.progressBar_Test.maximum() :
self.timerVar.stop() def printValue(self) :
print(self.progressBar_Test.value()) if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
ListWidget
#ListWidget
"""
QListWidget의 항목이 클릭되었을 때 기능 실행
self.ListWidget이름.itemClicked.connect(함수) QListWidget의 항목이 더블클릭되었을 때 기능 실행
self.ListWidget이름.itemDoubleClicked.connect(함수) QListWidget에서 다른 항목이 선택되었을 때
self.ListWidget이름.currentItemChanged.connect(함수) QListWidget의 함수
QListWidgetItem객체.text() 항목의 반환
.currentRow()->ListWidget에서 선택한 항목이 몇번째 항목인지를 반환합니다.
.currentItem()->ListWidget에서 선택한 항목을 반환합니다. 이때, 반환된 값은 QListWidgetItem의 객체입니다.
.item(row)->ListWidget에서 Row번째 항목을 반환합니다. 이때, 반환된 값은 QListWidgetItem의 객체입니다. 항목의 추가, 삭제
.addItem(String)->ListWidget에 새로운 항목을 추가합니다. Parameter로 추가할 항목의 문자열을 입력합니다.
.insertItem(row, String)->ListWiget의 row번째에 새로운 항목을 추가합니다. Parameter로 추가할 위치와 추가할 항목의 문자열을 입력합니다.
.takeItem(row)->ListWidget의 row번째 항목을 삭제합니다. 삭제된 항목은 QListWidgetItem의 형태로 반환됩니다.
.clear()->ListWidget의 모든 항목을 삭제합니다.
"""
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import uic form_class = uic.loadUiType("L016.ListWidget.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self) #ListWidget의 시그널
self.listWidget_Test.itemClicked.connect(self.chkItemClicked)
self.listWidget_Test.itemDoubleClicked.connect(self.chkItemDoubleClicked)
self.listWidget_Test.currentItemChanged.connect(self.chkCurrentItemChanged) #버튼에 기능 연결
self.btn_add.clicked.connect(self.addListWidget)
self.btn_insert.clicked.connect(self.insertListWidget) self.btn_print.clicked.connect(self.printCurrentItem)
self.btn_print_multi.clicked.connect(self.printMultiItems)
self.btn_remove.clicked.connect(self.removeCurrentItem)
self.btn_clear.clicked.connect(self.clearItem) #ListWidget의 시그널에 연결된 함수들
def chkItemClicked(self) :
print(self.listWidget_Test.currentItem().text()) def chkItemDoubleClicked(self) :
print(str(self.listWidget_Test.currentRow()) + " : " + self.listWidget_Test.currentItem().text()) def chkCurrentItemChanged(self) :
print("Current Row : " + str(self.listWidget_Test.currentRow())) #항목을 추가, 삽입하는 함수들
def addListWidget(self) :
self.addItemText = self.line_addItem.text()
self.listWidget_Test.addItem(self.addItemText) def insertListWidget(self) :
self.insertRow = self.spin_insertRow.value()
self.insertText = self.line_insertItem.text()
self.listWidget_Test.insertItem(self.insertRow, self.insertText) #Button Function
def printCurrentItem(self) :
print(self.listWidget_Test.currentItem().text()) def printMultiItems(self) :
#여러개를 선택했을 때, selectedItems()를 이용하여 선택한 항목을 List의 형태로 반환받습니다.
#그 후, for문을 이용하여 선택된 항목을 출력합니다.
#출력할 때, List안에는 QListWidgetItem객체가 저장되어 있으므로, .text()함수를 이용하여 문자열로 변환해야 합니다.
self.selectedList = self.listWidget_Test.selectedItems()
for i in self.selectedList :
print(i.text()) def removeCurrentItem(self) :
#ListWidget에서 현재 선택한 항목을 삭제할 때는 선택한 항목의 줄을 반환한 후, takeItem함수를 이용해 삭제합니다.
self.removeItemRow = self.listWidget_Test.currentRow()
self.listWidget_Test.takeItem(self.removeItemRow) def clearItem(self) :
self.listWidget_Test.clear() if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
Table Widget
#Table Widget
"""
QTableView의 속성
showGrid : 표의 선을 보여줄지를 결정합니다.
gridStyle : showGrid를 체크했을 때, 표의 선을 어떤 모양으로 할지를 결정합니다. 기본값은 SolidLine(실선) 입니다. QTableWidget의 속성
rowCount : QTableWidget의 행의 개수를 결정합니다. 기본값은 0입니다.
columnCount : QTableWidget의 열의 개수를 결정합니다. QTableWidget의 시그널
TableWidget의 Cell의 내용이 바뀌었을 때 기능 실행
self.TableWidget이름.cellChanged.connect(함수) TableWidget에서 선택된 Cell이 바뀌었을 때 기능 실행
self.TableWidget이름.currentCellChanged.connect(함수) TableWidget에서 Cell이 클릭 되었을 때 기능 실행
self.TableWidget이름.cellClicked.connect(함수) TableWidget에서 Cell이 더블클릭 되었을 때 기능 실행
self.TableWidget이름.cellDoubleClicked.connect(함수) QTableWidget의 함수
#QTableWidgetItem객체의 생성
qTableWidgetItemVar = QTableWidgetItem("항목이 가질 문자열 입력") #QTableWidgetItem객체의 문자열 반환
qTableWidgetItemVar.text() #QTableWidgetItem객체의 문자열 수정
qTableWidgetItemVar.setText("새로운 문자열") 현재상태의 반환
.item(row, col)->row번째 줄, col번째 열의 항목을 반환합니다. 이때, 반환된 항목은 QTableWidgetItem의 형식으로 반환됩니다.
.currentItem()->현재 선택하고 있는 항목을 반환합니다. 이때, 반환된 항목은 QTableWidgetItem의 형식으로 반환됩니다.
.currentRow()->현재 선택하고 있는 항목의 행을 반환합니다.
.currentColumn()->현재 선택하고 있는 항목의 열을 반환합니다.
.selectedItems()->선택한 항목들을 리스트 형식으로 반환합니다. 리스트 안에는 선택된 항목들이 QTableWidgetItem의 형식으로 포함되어 있습니다.
.selectedRanges()->현재 선택한 범위를 QTableWidgetSelectionRange의 형식으로 반환합니다. 항목의 추가, 삭제와 관련된 함수
.setItem(row,col,item)->row번째 줄, col번째 칸에 Item이라는 항목을 추가합니다. 이때, Item은 QTableWidgetItem 형식의 객체여야 합니다.
.takeItem(row,col)->row번째 줄, col번째 칸에 있는 항목을 삭제합니다. 이때, 삭제된 항목은 QTableWidgetItem형식의 객체로 반환됩니다.
.clear()->행과 열의 Header를 포함한 모든 항목을 삭제합니다.
.clearContents()->행과 열의 Header를 제외한 모든 항목을 삭제합니다. Table의 행과 열에 관련된 함수
.currentColumnCount()->현재 Table Widget에 존재하는 열의 개수를 반환합니다.
.currentRowCount()->현재 Table Widget에 존재하는 행의 개수를 반환합니다.
.setColumnCount(col)->현재 Table Widget의 열의 개수를 col개로 설정합니다.
.setRowCount(row)->현재 Table Widget의 행의 개수를 row개로 설정합니다. .horizontalHeaderItem(col)->col번째 열의 Header를 QTableWidgetItem 형식의 객체로 반환합니다.
.takeHorizontalHeader(col)->col번째 열의 Header를 삭제합니다. 이때 삭제된 항목은 QTableWidgetItem형식의 객체로 반환됩니다.
.setHorizontalHeaderItem(col, item)->col번째 열의 Header를 Item이 가지고 있는 글자로 바꿉니다. 이때, Item은 QTableWidgetItem 형식의 객체여야 합니다.
.setHorizontalHeaderLabels(List)->열들의 Header를 일괄적으로 변경합니다. Parameter로 새로운 Header가 될 문자열이 들어있는 List가 필요하며, List의 0번째 항목이 0번째 열의 Header가 됩니다. .verticalHeaderItem(row)->row번째 줄의 Header를 QTableWidgetItem 형식의 객체로 반환합니다.
.takeVerticalHeader(row)->row번째 줄의 Header를 삭제합니다. 이때 삭제된 항목은 QTableWidgetItem형식의 객체로 반환됩니다.
.setVerticalHeaderItem(row, item)->row번째 줄의 Header를 Item이 가지고 있는 글자로 바꿉니다. 이때, Item은 QTableWidgetItem 형식의 객체여야 합니다.
.setVerticalHeaderLabels(List)->행들의 Header를 일괄적으로 변경합니다. Parameter로 새로운 Header가 될 문자열이 들어있는 List가 필요하며, List의 0번째 항목이 0번째 행의 Header가 됩니다.
""" #https://doc.qt.io/qtforpython/PySide2/QtWidgets/QTableWidget.html?highlight=qtablewidget
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import uic form_class = uic.loadUiType("L017.TableView.ui")[0] class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
self.tableWidget_Test.cellChanged.connect(self.cellChangeFunc) def cellChangeFunc(self) :
print("cellChanged") if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
L001.PyQt的更多相关文章
- Python应用03 使用PyQT制作视频播放器
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...
- arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序
前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...
- Pyqt 基础功能
总结Pyqt的基础知识 1. Pyqt 设置禁止最大化及禁止拖拽窗口大小 # PyQT禁止窗口最大化按钮: self.setWindowFlags(QtCore.Qt.WindowMinimizeB ...
- 模拟提交API数据Pyqt版
其实这个模拟提交数据之前已经写过篇: Python requests模拟登录 因为现在在做的项目中需要一个debug请求调试API,用PHP的CURL写了一个,又因Pyqt更能直观灵活的显示请求的参数 ...
- pyqt的信号槽机制(转)
PySide/PyQt Tutorial: Creating Your Own Signals and Slots This article is part 5 of 8 in the series ...
- Qt for Mac 安装(包括PyQt)
下载Qt: http://qt-project.org/downloads Qt5.2 for Mac:http://download.qt-project.org/official_releases ...
- Pyqt+QRcode 生成 识别 二维码
1.生成二维码 python生成二维码是件很简单的事,使用第三方库Python QRCode就可生成二维码,我用Pyqt给QRcode打个壳 一.python-qrcode介绍 python-qrco ...
- Pyqt 获取打包二进制文件中的资源
记得有一次打开一个单独exe程序,点击btn中的一个帮助说明按钮,在同级目录下就多出一个help.chm 文件并自动打开. 那这个exe肯定是把help.chm 打包到exe中,当我触发“帮助”按钮的 ...
- Pyqt 动态的添加控件
Pyqt 动态的添加控件 # -*- coding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * import sys ...
随机推荐
- tf识别非固定长度图片ocr(数字+字母 n位长度可变)- CNN+RNN+CTC
先安装必须的库 tensorflow_gpu==1.15.0 numpy opencv_python github: https://github.com/bai-shang/crnn_ctc_ocr ...
- Oracle操作语句--增加/删除
1.删除1980年雇员的雇员信息: delete from myemp where hiredate between to_date('1980-1-1','yyyy-mm-dd') and ...
- 认识Git与GitHub
Git介绍 Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.相比CVS.SVN等版本控制工具,Git更加优秀,功能也更加强大.但是相对也难学. 使用Git来管理 ...
- 详解python的装饰器decorator
装饰器本质上是一个python函数,它可以让其它函数在不需要任何代码改动的情况下增加额外的功能. 装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志,性能测试,事务处理,缓存, ...
- [python-docx]docx文档操作的库
from docx import Document from docx.shared import Inches # 新建document对象 document = Document() # 添加段落 ...
- CCF_ 201512-4_送货
一道拖了很久了题,用bool开的vis不会爆内存,dfs回溯的话会超时,于是有了一个很巧妙的dfs. #include<iostream> #include<cstring> ...
- 万字分享,我是如何一步一步监控公司MySQL的?
整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...
- Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}
1.给子域名加www标记 RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC] RewriteCond %{HTTP_HOST} !^www\ ...
- 你还用拼音为变量命名?新人OIer别傻了,教你写出优质代码
本篇文章适用语言:python,c++,Java.(其实我就是随便bb) 我们在编辑代码的时候,不免拿其他人的代码进行学习,或者将自己的代码拿给别人修改.这个时候,如何让别人快速读懂你的代码,是提升效 ...
- 【HDU - 2859 】Phalanx (dp 最大对称子图)
Phalanx 先搬翻译 Descriptions: 给你一个矩阵,只由小写或大写字母构成.求出它的最大对称子矩阵的边长. 其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称.例 ...