|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
from EXPANDABLE_MENU import *
from CHROMELESS_WINDOW import *
from MAPPING import *
from definition_parameter import DP
from signal_intermediary import signal_intermediary
def search_ui(self, x, y, width, height, js_def,
font_size: int = 20,
font_color: str = '#333333',
border: int = 1, # 边框宽度
border_radius: int = 3, # 边框圆角大小
padding: int = 2, # 文字与边框的距离
background_color: str = 'white', # 输入框背景色
border_color: str = '#2196F3', # 边框颜色
):
'''输入框 调用本函数必须在类内部重写以下方法:
def focusInEvent(self, event):
"""窗口获得焦点时自动聚焦到输入框"""
self.edit.setFocus()
本函数search_ui与 keyPressEvent(self, event)内置方法键盘监控函数互相强占焦点
,当本函数存在时keyPressEvent函数将失灵,解决方法:
现在__init__中粘贴 QApplication.instance().installEventFilter(self)
def eventFilter(self, obj, event):
if event.type() == QEvent.KeyPress and event.key() == Qt.Key_Space:
print("全局空格")
return True
return super().eventFilter(obj, event)
'''
# 1. 可见的输入框(自定义位置和大小)
self.edit = QLineEdit(self)
self.edit.setGeometry(x, y, width, height)
self.edit.setPlaceholderText("请在此输入内容...")
self.edit.setStyleSheet(f"""
QLineEdit {{ /* 设置 QLineEdit 的基本样式 */
font-size: {font_size}px; /* 字体大小:16像素 */
color: {font_color}; /* 字体颜色:深灰色(HEX #333333) */
border: {border}px solid #aaa; /* 边框:1像素宽,浅灰色实线 */
border-radius: {border_radius}px; /* 边框圆角:5像素 */
padding: {padding}px; /* 内边距:5像素(文字与边框的距离) */
background-color: {background_color}; /* 背景颜色:白色 */
}}
QLineEdit:focus {{ /* 当 QLineEdit 获得焦点时的样式 */
border: 2px solid {border_color}; /* 边框:2像素宽,蓝色实线(HEX #2196F3) */
}}
QLineEdit:hover {{ /* 鼠标悬停在 QLineEdit 上时的样式 */
border: 1px solid #888888; /* 边框:1像素宽,灰色实线(HEX #888888) */
}}
QLineEdit:disabled {{ /* 当 QLineEdit 被禁用时的样式 */
color: #aaaaaa; /* 字体颜色:浅灰色(禁用状态文字变灰) */
background-color: #f0f0f0; /* 背景颜色:浅灰色(禁用状态背景变灰) */
}}
QLineEdit::placeholder {{ /* 设置占位文本(placeholder)的样式 */
color: #cccccc; /* 占位文本颜色:更浅的灰色 */
font-style: italic; /* 占位文本字体样式:斜体 */
}}
""")
# 3. 连接信号
self.edit.textChanged.connect(js_def)
# return self.edit
class B(ExpandableMenu):
ffff = Signal()
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(100, 100, 150, 150)
self.parameters_settings(
window_x=(self.screenWidth - self.width()) // 2,
window_y=(self.screenHeight - self.height()) // 2,
window_width=int(self.screenWidth * 0.2),
text_number=10, # 要显示文本数量
text_sum=10, # 文本的总长度
text_size=DP.font_size, # 字体大小
text_window_start_y=self.frame_y * 2, # 用于显示文本区域的起始x位置 非绘制文字的空白区域总高度
move_create_color='#CEA5DA', # 跟随鼠标矩形的颜色
scrollbar_color='#444343', # 滚动条颜色
scrollbar_area_color='#FAF8F8', # 滚动条区域的颜色
backcolor='#5D5C5C', # 背景颜色
min_button_tf=False, # 最小化
max_button_tf=False, # 最大化
button_close_tf=True # 关闭
)
search_ui(self, 0, self.frame_y, self.width(), self.frame_y
, self.new_search)
ok = QApplication.instance().installEventFilter(self)
def new_search(self, text):
self.ffff.emit()
# self.parameters_settings(
# window_x=(self.screenWidth - self.width()) // 2,
# window_y=(self.screenHeight - self.height()) // 2,
# window_width=int(self.screenWidth * 0.2),
# text_number=10, # 要显示文本数量
# text_sum=10, # 文本的总长度
# text_size=DP.font_size, # 字体大小
# text_window_start_y=self.frame_y * 2, # 用于显示文本区域的起始x位置 非绘制文字的空白区域总高度
# move_create_color='#CEA5DA', # 跟随鼠标矩形的颜色
# scrollbar_color='#444343', # 滚动条颜色
# scrollbar_area_color='#FAF8F8', # 滚动条区域的颜色
# backcolor='#5D5C5C', # 背景颜色
# min_button_tf=False, # 最小化
# max_button_tf=False, # 最大化
# button_close_tf=True # 关闭
# )
print('aaaaaaaaaaa', text)
class A(ChromelessWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool) # 设置窗口在任务栏中不可见
self.setGeometry(100, 100, 300, 300)
self.BB = B(self)
self.BB.ffff.connect(self.new_s)
def new_s(self):
self.BB.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
self.BB.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
a = A()
a.show()
sys.exit(app.exec())
# 程序第一次运行是窗口B也没有显示出来,但是我点击键盘立刻就能跳出输入法new_s接收到信号后就能弹出B
# 窗口,但是当我关闭B窗口之后在点击键盘就不会弹出输入法了,并且new_s也收不到信号,我的问题是:
# 当我关闭B窗口后,A窗口的状态和B窗口的状态包括self.edit的状态肯定发生了变化和程序初次运行时有所不同了,导致B
# 窗口捕获不到键盘的输入也弹不出输入法,我该如何一步一步检查A,B,self.edit的初始状态和关闭B窗口之后A,B,self.edit的状态 |
|