本周我一直在搞乱Python和IronPython,我偶然发现了一个非常烦人的怪异。
基本上我连接到MSSQL数据库,并且在成功设置self.label1.Text = "Connected to " + sqlConn.Database + " on " + sqlConn.DataSource
之后,我的标签正在更新,只是在表单上说“已连接到”。之后我放置了MessageBox.Show(self.label1.Text)
,这显示了所有正确的信息(“连接到DATASOURCE上的DATABASE”)。我的问题是,为什么IronPython没有在表单上正确设置我的标签文本?
class MyForm(Form):
def __init__(self):
self.button1 = Button()
self.button1.Text = "Click Me!"
self.button1.Click += self.button1_Click
self.Controls.Add(self.button1)
self.label1 = Label()
self.label1.Location = Point(10, 50)
self.Controls.Add(self.label1)
def button1_Click(self, sender, args):
sqlConn = self.connectSql()
if sqlConn.State == ConnectionState.Open:
self.label1.Text = "Connected to " + sqlConn.Database + " on " + sqlConn.DataSource
MessageBox.Show(self.label1.Text)
else:
self.label1.Text = "Failed connection"
def connectSql(self):
sqlConn = SqlClient.SqlConnection("Data Source=(local);Initial Catalog=IT_Project;Integrated Security=True;")
try:
sqlConn.Open()
except System.Exception as ex:
MessageBox.Show("Error!\r\n" + ex.Message, "EXCEPTION HANDLED")
return sqlConn
提前致谢。 :)
答案 0 :(得分:1)
Label的内容因其默认大小和行为而被截断。通过手动设置足够的大小或使用AutoSize-Property,可以显示完整内容。 创建标签后,可以使用以下代码将标签大小调整为其内容:
self.label1.AutoSize = True
消息框显示实际控件文本中的完整值暗示了根本原因。
请注意,根据文档,自动调整大小默认行为可能会有所不同:
使用设计器添加到表单时,默认值为true。从代码实例化时,默认值为false。