class KeyBoard(QWidget, Ui_KeyBoard): signalShowText = QtCore.pyqtSignal(str) def __init__(self, parent=None): super(KeyBoard, self).__init__(parent) self.setupUi(self) self.setWindowFlags(Qt.WindowStaysOnTopHint) self.m_pDetailWidget = DetailWidget() self.m_pDetailWidget.signalText.connect(self.slot_text) self.btn_0.clicked.connect(self.on_btn_f0_clicked) self.btn_1.clicked.connect(self.on_btn_f1_clicked) self.btn_2.clicked.connect(self.on_btn_f2_clicked) self.btn_3.clicked.connect(self.on_btn_f3_clicked) self.btn_4.clicked.connect(self.on_btn_f4_clicked) self.btn_5.clicked.connect(self.on_btn_f5_clicked) self.btn_6.clicked.connect(self.on_btn_f6_clicked) self.btn_7.clicked.connect(self.on_btn_f7_clicked) self.btn_8.clicked.connect(self.on_btn_f8_clicked) self.btn_9.clicked.connect(self.on_btn_f9_clicked) # self.btn_Sym.clicked.connect(self.on_btn_sym_clicked) self.btn_Sma.clicked.connect(self.on_btn_sma_clicked) self.btn_Cap.clicked.connect(self.on_btn_cap_clicked) self.btn_Num.clicked.connect(self.on_btn_num_clicked) self.btn_Space.clicked.connect(self.on_btn_space_clicked) self.btn_Point.clicked.connect(self.on_btn_point_clicked) self.btn_Hide.clicked.connect(self.on_btn_hide_clicked) self.btn_Show.clicked.connect(self.on_btn_show_clicked) self.btn_Del.clicked.connect(self.on_btn_del_clicked) self.btn_Again.clicked.connect(self.on_btn_again_clicked) self.btn_Wrap.clicked.connect(self.on_btn_wrap_clicked) self.btn_Sure.clicked.connect(self.on_btn_sure_clicked) # 鼠標事件 def mousePressEvent(self, event): global m_pPoint m_pPoint = event.globalPos() - self.pos() event.accept() # 鼠標事件 def mouseMoveEvent(self, event): self.move(event.globalPos() - m_pPoint) event.accept() # 鼠標事件 def enterEvent(self, event): self.setCursor(Qt.PointingHandCursor) event.accept() # 鼠標事件 def leaveEvent(self, event): self.setCursor(Qt.ArrowCursor) event.accept() # 0鍵 def on_btn_f0_clicked(self): global str_key global m_nType if m_nType == 1: str_key += "0" self.btn_Show.setText(str_key) elif m_nType == 2: str_key += " " self.btn_Show.setText(str_key) elif m_nType == 3: str_key += "△" self.btn_Show.setText(str_key) # 1鍵 def on_btn_f1_clicked(self): global str_key if m_nType == 1: str_key += "1" self.btn_Show.setText(str_key) elif m_nType == 2: qstr = ',;?;!;' strList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(strList) m_pPoint = self.btn_1.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "@" self.btn_Show.setText(str_key) #2鍵 def on_btn_f2_clicked(self): global str_key if m_nType == 1: str_key += "2" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'A;B;C;' else: qstr = 'a;b;c;' qList = qstr.split(';') print(qList) self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_2.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "%" self.btn_Show.setText(str_key) # 3鍵 def on_btn_f3_clicked(self): global str_key if m_nType == 1: str_key += "3" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'D;E;F;' else: qstr = 'd;e;f;' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_3.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "!" self.btn_Show.setText(str_key) # 4鍵 def on_btn_f4_clicked(self): global str_key if m_nType == 1: str_key += "4" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'G;H;I;' else: qstr = 'g;h;i;' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_4.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "+" self.btn_Show.setText(str_key) # 5鍵 def on_btn_f5_clicked(self): global str_key if m_nType == 1: str_key += "5" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'J;K;L;' else: qstr = 'j;k;l;' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_5.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "*" self.btn_Show.setText(str_key) # 6鍵 def on_btn_f6_clicked(self): global str_key if m_nType == 1: str_key += "6" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'O;M;N;' else: qstr = 'o;m;n;' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_6.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "√" self.btn_Show.setText(str_key) # 7鍵 def on_btn_f7_clicked(self): global str_key if m_nType == 1: str_key += "7" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'P;Q;R;S' else: qstr = 'p;q;r;s' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_7.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "-" self.btn_Show.setText(str_key) # 8鍵 def on_btn_f8_clicked(self): global str_key if m_nType == 1: str_key += "8" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'T;U;V;' else: qstr = 't;u;v;' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_8.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "/" self.btn_Show.setText(str_key) # 9鍵 def on_btn_f9_clicked(self): global str_key if m_nType == 1: str_key += "9" self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): qstr = 'W;X;Y;Z' else: qstr = 'w;x;y;z' qList = qstr.split(';') self.m_pDetailWidget.set_small_pad_text(qList) m_pPoint = self.btn_9.pos() + self.pos() self.m_pDetailWidget.move(m_pPoint.x(), m_pPoint.y() - 35) elif m_nType == 3: str_key += "×" self.btn_Show.setText(str_key) # 數字模式 def on_btn_num_clicked(self): global m_nType m_nType = 1 self.init_pad_text(1) self.btn_Space.setCheckable(False) self.btn_Space.setChecked(False) # 大寫 def on_btn_cap_clicked(self): global m_nType m_nType = 2 self.btn_Space.setCheckable(True) self.btn_Space.setChecked(True) self.init_pad_text(2) # 小寫 def on_btn_sma_clicked(self): global m_nType m_nType = 2 self.btn_Space.setCheckable(True) self.btn_Space.setChecked(False) self.init_pad_text(2) # 符號 def on_btn_sym_clicked(self): global m_nType m_nType = 3 self.init_pad_text(3) self.btn_Space.setCheckable(False) self.btn_Space.setChecked(False) # 回退 def on_btn_del_clicked(self): global str_key str_key = self.btn_Show.text() str_key = str_key[0:len(str_key) - 1] self.btn_Show.setText(str_key) # 清除 def on_btn_again_clicked(self): global str_key str_key = "" self.btn_Show.setText(str_key) # 換行 def on_btn_wrap_clicked(self): global str_key str_key += "\n" self.btn_Show.setText(str_key) # 關閉 def on_btn_hide_clicked(self): self.on_btn_again_clicked() self.hide() self.m_pDetailWidget.hide() # 顯示 def on_btn_show_clicked(self): global str_key self.signalShowText.emit(self.btn_Show.text()) str_key = "" self.btn_Show.setText("") # 空格 def on_btn_space_clicked(self): global str_key if m_nType == 1: str_key += " " self.btn_Show.setText(str_key) elif m_nType == 2: if self.btn_Space.isChecked(): self.on_btn_cap_clicked() else: self.on_btn_sma_clicked() else: str_key += " " self.btn_Show.setText(str_key) #點 def on_btn_point_clicked(self): global str_key str_key += "." self.btn_Show.setText(str_key) # 確定 def on_btn_sure_clicked(self): global str_key self.signalShowText.emit(self.btn_Show.text()) str_key = "" self.btn_Show.setText("") # 初始化鍵盤 def init_pad_text(self, m_type): if m_type == 1: qstr = '1;2;3;4;5;6;7;8;9;└┘;0' qList = qstr.split(';') self.set_pad_text(qList) elif m_type == 2: if self.btn_Space.isChecked(): qstr = ',?!;ABC;DEF;GHI;JKL;OMN;PQRS;TUV;WXYZ;shift;└┘' qList = qstr.split(';') self.set_pad_text(qList) else: qstr = ',?!;abc;def;ghi;jkl;omn;pqrs;tuv;wxyz;shift;└┘' qList = qstr.split(';') self.set_pad_text(qList) elif m_type == 3: qstr = '@;%;!;+;*;√;-;/;×;└┘;△' qList = qstr.split(';') self.set_pad_text(qList) # 設置鍵盤字符 def set_pad_text(self, strlist): self.btn_1.setText(strlist[0]) self.btn_2.setText(strlist[1]) self.btn_3.setText(strlist[2]) self.btn_4.setText(strlist[3]) self.btn_5.setText(strlist[4]) self.btn_6.setText(strlist[5]) self.btn_7.setText(strlist[6]) self.btn_8.setText(strlist[7]) self.btn_9.setText(strlist[8]) self.btn_Space.setText(strlist[9]) self.btn_0.setText(strlist[10]) # 接收小鍵盤數據 def slot_text(self, str_text): global str_key str_key += str_text self.btn_Show.setText(str_key)